首页 新闻 会员 周边 捐助

算出差值最小的两个乘数 C#

0
悬赏园豆:20 [已解决问题] 解决于 2017-02-23 16:57

算出差值最小的两个乘数 C#

3=1*3
6=2*3
8=2*4
12=3*4
15=3*5
18=3*6
24=4*6

通过一个数算出后面两个值

十一一十三的主页 十一一十三 | 菜鸟二级 | 园豆:247
提问于:2017-02-23 12:05
< >
分享
最佳答案
1

static Tuple<int, int> GetNeedData(int source)
{
if (source <= 0)
return new Tuple<int, int>(0,0);
int x = 1, y = source;
int t1 = x, t2 = y;
for (; x <= y; x++){

if (source % x == 0)
{
y = source / x;
if(x <= y)
{
t1 = x;
t2 = y;
Console.WriteLine($"x:{x},y:{y}");
}

}
}
Console.WriteLine($"need-data->x:{t1},y:{t2}");
return new Tuple<int, int>(t1, t2);
}

收获园豆:13
kingreatwill | 菜鸟二级 |园豆:383 | 2017-02-23 14:12

谢谢

十一一十三 | 园豆:247 (菜鸟二级) | 2017-02-23 16:57
其他回答(2)
0

一个循环就够.找出x比y小的最大数.一个循环就可以

收获园豆:5
吴瑞祥 | 园豆:29449 (高人七级) | 2017-02-23 12:07

只通过一个数,算出两个乘数来,可以求过程吗。我自己卡在一个地方了

是先用3 算出最大的3的倍值,然后就求不出来了

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2017-02-23 12:09

@疯五五爱喝咖啡: 你不会找一个数的约数吗.从2开始求余数.余数为0了就能被整除.

然后再除以整除的数就能得到2个乘数.话说这种是初中数学题吧

你要是连这种水平的数学题都不会做.我还能说什么..

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-02-23 12:13

@吴瑞祥: 嗯,确实水平较低,谢谢指导

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2017-02-23 16:56
0
        static void Main(string[] args)
        {
            Console.WriteLine("输入一个数字");
            int number = Convert.ToInt32(Console.ReadLine());
            int j;
            List<int> a = new List<int>();
            for (int i = 1; i < number; i++)
            {
                if (number % i == 0)
                {
                    j = number / i;
                    a.Add(Math.Abs(j - i));
                }
            }
            int minnumber = a.Min();  //这个是差值
            double number1 = 0;              //第一个乘数
            double number2 = 0;              //第二个乘数
            double dt = minnumber * minnumber + 4 * number;
            if (dt < 0)
            {
                Console.WriteLine("无解");

            }
            else if (dt == 0)
            {
                number1 = Math.Abs(-minnumber / 2 * number);
                Console.WriteLine("两个乘数为{0}和{1}", number1, number1);

            }
            else
            {
                number1 = Math.Abs((-minnumber + Math.Sqrt(dt)) / 2 );
                number2 = Math.Abs((-minnumber - Math.Sqrt(dt)) / 2 );
                Console.WriteLine("两个乘数为{0}和{1}", number1, number2);

            }
            Console.ReadKey();
        }

 

收获园豆:2
冷_冷 | 园豆:371 (菜鸟二级) | 2017-02-23 14:36

已经用了第二位同学的代码了,老板催得急, 没有办法自己想了,还是非常感谢。会看你的代码的

支持(0) 反对(0) 十一一十三 | 园豆:247 (菜鸟二级) | 2017-02-23 16:57

性能有所差别,测试一个无解的,可以没有截图

支持(0) 反对(0) kingreatwill | 园豆:383 (菜鸟二级) | 2017-02-23 17:39

  无解

支持(0) 反对(0) kingreatwill | 园豆:383 (菜鸟二级) | 2017-02-23 17:42

这好像是一个公式,我忘记叫什么了。666 ,你是刚毕业的吧,还是还在读书

支持(0) 反对(0) kingreatwill | 园豆:383 (菜鸟二级) | 2017-02-23 17:48

@kingreatwill: 一元二次求根,刚毕业,他的方法比我好,

支持(0) 反对(0) 冷_冷 | 园豆:371 (菜鸟二级) | 2017-02-23 18:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册