c# - 欧拉计划的问题问题 12

标签 c#

我在解决 Project Euler 的问题 12 时遇到了麻烦。据我所知,我的代码正确地生成了序列,并且它得到了测试问题的正确解决方案。我不相信 long 会溢出,因为它确实返回了一个解决方案,只是不是正确的解决方案。有什么想法吗?

The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

Let us list the factors of the first seven triangle numbers:

1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

class Program
{
    static long lastTriangle = 1;

    static void Main(string[] args)
    {
        long x = 1;
        do
        {
            x = nextTriangle(x);
            Console.WriteLine(x);
        } while (numDivisors(x) < 500);

        Console.WriteLine(x);
        Console.ReadLine();
    }

    static long nextTriangle(long arg)
    {
        lastTriangle += 1;
        long toReturn = lastTriangle + arg;
        return toReturn;
    }

    static long numDivisors(long arg)
    {
        long count = 0;
        long lastDivisor = 0;
        Boolean atHalfWay = false;
        for (long x = 1; x <= arg && !atHalfWay; x++)
        {
            if (arg % x == 0 && x != lastDivisor)
            {
                count++;
                lastDivisor = arg / x;
            }
            else if (x == lastDivisor)
            {
                atHalfWay = true;

            }
        }
        return count*2;
    }
}

最佳答案

如果x 是一个正方形,numDivisors 计算x 的平方根两次。

关于c# - 欧拉计划的问题问题 12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183019/

相关文章:

c# - .NET EventHandlers - 是否通用?

c# - 在 C#2.0 中不使用 foreach 循环过滤 List<> 对象

c# - 如何拆分/切片图像给每个图像 ID 以保存在数据库 C#

c# - 如果 "using" block 内部发生异常,是否调用了Dispose方法?

c# - 循环而不卡住程序?

c# - c# 多窗口窗体切换

c# - 来自 .NET Standard 类库的日志消息

c# - MonoTouch 中的 UISaveVideoAtPathToSavedPhotosAlbum 在哪里?

c# - 如何使用C#实现对某年某金额的查询

c# - 未传送 GCM 消息