-2

我想找到一个范围内完美数字的数量。这就是我到目前为止所做的。

#include <iostream>

using namespace std;

int main()
{
   // cout<<"Hello World";
   int sum = 0;
   int count = 0;
   int x,y;
   cout<<"Enter the first number";
   cin>> x;
   cout<<"Enter the second number";
   cin>>y;
   for(int i=x;i<=y;i++)
   {
       for(int j=1; j<i; j++)
       {
           if(i%j == 0)
           {
               sum=sum+j;
           }
       }
       if(sum == i)
       {
           count++;
       }
   }
   cout<<"The number of pefect numbers are: "<<count;


}

但是,当我输入范围时,它告诉我在 1 - 10 范围内可用的完美数字的数量为 0。

这是为什么?我无法弄清楚这里有什么问题?

4

1 回答 1

2

需要sum=0为每个输入做准备。例如

if(sum == i) {
      count++;
}
sum = 0; /* add this line here */

或者

for(int i=x;i<=y;i++) {
        sum = 0; /* or make sum as 0 here  */
        for(int j=1; j<i; j++) { 
                if(i%j == 0) {
                        sum=sum+j;
                }
        }
        if(sum == i) {
                count++;
        }
}

另请阅读为什么“使用命名空间标准”被认为是不好的做法?

于 2018-10-29T17:24:19.377 回答