我实际上正在练习项目euler以提高我在c#中的技能,而对于问题#3我写下了我在下面的代码,但它不起作用,因为它给我一个错误的结果。问题链接是 here
你能告诉我为什么吗?
using System;
using System.Linq;
namespace ConsoleApplication22
{
class Program
{
static void Main(string[] args)
{
int[] rep = new int[35];
int index = 0;
long nb = 600851475143;
int divider = 2;
while (divider < nb / 2)
{
while (nb % divider == 0)
{
nb /= 2;
rep[index] = divider;
index += 1;
}
divider += 1;
}
Console.WriteLine("The annswer is : " + rep.Max());
Console.Read();
}
}
答案 0 :(得分:1)
您应该除以divider
,而不是2
。此外,第一个while
应转到nb
,因为您始终将nb
缩小。
static void Main(string[] args)
{
int[] rep = new int[35];
int index = 0;
long nb = 600851475143;
int divider = 2;
while (divider <= nb)
{
while (nb % divider == 0)
{
nb /= divider;
rep[index] = divider;
index += 1;
}
divider += 1;
}
Console.WriteLine("The answer is : " + rep.Max());
Console.Read();
}