尝试使用嵌套循环在c#中的两个给定值之间找到完美数

尝试使用嵌套循环在c#中的两个给定值之间找到完美数,c#,perfect-numbers,C#,Perfect Numbers,我试图在两个给定的数字之间找到一个完美的数字,例如1和50。不幸的是,我的代码将1和24打印为完全数 有人能纠正这个代码并解释他们做了什么吗 我是新来的编码,所以请不要告诉我关于列表和东西,我在这里寻求您的帮助,以了解我哪里出了问题,我可以如何改进它。如果你能改正这个密码,我将不胜感激 class Program { static void Main(string[] args) { int n2 = int.Parse(Console.ReadLine());

我试图在两个给定的数字之间找到一个完美的数字,例如1和50。不幸的是,我的代码将1和24打印为完全数

有人能纠正这个代码并解释他们做了什么吗

我是新来的编码,所以请不要告诉我关于列表和东西,我在这里寻求您的帮助,以了解我哪里出了问题,我可以如何改进它。如果你能改正这个密码,我将不胜感激

class Program
{
    static void Main(string[] args)
    {
        int n2 = int.Parse(Console.ReadLine());
        int n3 = int.Parse(Console.ReadLine());

        //int sum;            

        for (int i = n2; i < n3; i++)
        {
            int sum = 0;

            for (int j = 1; j <= i; j++)
            {
                if (i % j == 0 )
                    sum = sum + j;

                //Console.WriteLine(j);
                if (sum == i )
                {
                    Console.WriteLine("the sum is " + i);
                }
            }                                                            
        }

        Console.ReadLine();
    }                                           
}
类程序
{
静态void Main(字符串[]参数)
{
int n2=int.Parse(Console.ReadLine());
int n3=int.Parse(Console.ReadLine());
//整数和;
对于(int i=n2;i对于(int j=1;j您需要从定义什么是完美数开始。完美数是一个正整数,它等于其正因子之和不包括数字本身。让我们检查您的代码

for (int j = 1; j <= i; j++)
在这一点上,总和只能包含一部分正除数。您还需要查看整个除数列表。因此验证部分必须位于内部循环之外。例如

int n2 = int.Parse(Console.ReadLine());
int n3 = int.Parse(Console.ReadLine());

for (int i = n2; i < n3; i++)
{
    int sum = 0;
    for (int j = 1; j < i; j++)  // you need to exclude the number itself. So use Loop condition j <i, instead of j <=i
    {
        if (i % j == 0 )
        {
            sum = sum + j;

        }
    }      
    if (sum == i )  // Validate the sum with the number only after calculating sum of all divisors.
                {
        Console.WriteLine("the sum is " + i);
    }
}
intn2=int.Parse(Console.ReadLine());
int n3=int.Parse(Console.ReadLine());
对于(int i=n2;i对于(int j=1;j等于其正除数之和,排除数字本身。让我们检查您的代码

for (int j = 1; j <= i; j++)
在这一点上,总和只能包含一部分正除数。您还需要查看整个除数列表。因此验证部分必须位于内部循环之外。例如

int n2 = int.Parse(Console.ReadLine());
int n3 = int.Parse(Console.ReadLine());

for (int i = n2; i < n3; i++)
{
    int sum = 0;
    for (int j = 1; j < i; j++)  // you need to exclude the number itself. So use Loop condition j <i, instead of j <=i
    {
        if (i % j == 0 )
        {
            sum = sum + j;

        }
    }      
    if (sum == i )  // Validate the sum with the number only after calculating sum of all divisors.
                {
        Console.WriteLine("the sum is " + i);
    }
}
intn2=int.Parse(Console.ReadLine());
int n3=int.Parse(Console.ReadLine());
对于(int i=n2;i对于(int j=1;j