我想找到0到1000之间的完美数字,而不是在运行

时间:2016-10-14 20:09:27

标签: c# perfect-numbers

int num;
num = 0;
for (int i = 1; i < 1000; i++)
{
    for (int j = 1; j <= i / 2; j++)
    {
        if (i % j == 0)
            num = num + j;
    }

    if (num == i)
        Console.WriteLine(num);
}

我试着找到1到1000之间的完美数字,我写了这段代码,但它没有用!怎么了?

2 个答案:

答案 0 :(得分:3)

正如其他人提到的那样在外部循环中移动num = 0

int num;
for (int i = 1; i < 1000; i++)
{
    num = 0;
    for (int j = 1; j <= i / 2; j++)
    {
        if (i % j == 0)
        {
            num = num + j;
        }
    }

    if (num == i)
    {
        Console.WriteLine(num);
    }
}

这将为您提供输出 6 28 496这是0到1,000之间的完美数字

答案 1 :(得分:1)

移动:

num = 0;

在你的嵌套for循环之上。

像这样:

        int num;
        for (int i = 1; i < 1000; i++)
        {
            num = 0;
            for (int j = 1; j <= i / 2; j++)
            {
                if (i % j == 0)
                    num = num + j;
            }

            if (num == i)
                Console.WriteLine(num);
        }