项目欧拉#3 - 代码不工作

时间:2017-05-29 11:18:11

标签: c# algorithm

我实际上正在练习项目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();
        }
    }

1 个答案:

答案 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();
}