不计算一个范围内的完美数

Not counting number of perfect numbers within a range?

本文关键字:范围内 完美 一个 计算      更新时间:2023-10-16

我想找到一个范围内的完美数的个数。这就是我迄今为止所做的。

#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。

为什么?我搞不清楚这里出了什么问题?

需要为每个输入生成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++;
}
}

另请阅读为什么"使用命名空间std"被认为是不好的做法?