给你改好了:主要是因为每次计数后只有不符合完数的才清零,像6是完数没清零就进入下一次循环了
#include <bits/stdc++.h>
using namespace std;
int main()
{
//在这里输入您的程序
int b=0;
for(int i=2; i<=10000; i++)
{
b=0;
for(int j=1; j<=i/2; j++)
{
if(i%j==0)
{
b=b+j;
}
}
if(b!=i)
{
b=0;
}
else
{
cout<<i<<endl;
}
}
return 0;
}
每次循环之前现将b归零即可
因为你的b没有归零,所以6的计算结果会被带入7,导致7也被输出
修改后代码如下
有帮助望采纳
#include <iostream>
using namespace std;
int main()
{
//在这里输入您的程序
int b;
for (int i = 1; i <= 10000; i++)
{
b = 0;
for (int j = 1; j < i; j++)
{
if (i % j == 0)
{
b = b + j;
}
}
if (b != i)
{
b = 0;
}
else if (b == i)
{
cout << i << endl;
}
}
return 0;
}