for循环后无输出结果
/*一个数恰好等于它的因子之和,这个数就叫完数
*/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i, n,sum, amount = 0;
for (i = 1; i < 1000; i++)
{
sum = 0;
for (n = 1; n <= i; n++)
{
if (i % n == 0)
{
sum += n;
amount++;
}
}
if (sum == i)
cout << setw(5) << i;
if (amount % 5 == 0)
cout << endl;
}
cout << "1000以内总共有" << amount << "个完数";
return 0;
}
这是一个寻找1000以内的完数的代码
完数的解释在注释中给出
但是运行代码最后什么都没输出出来
大神们能给看看问题出在哪了吗 以下我复制你的代码的运行结果。说明你代码有严重问题,而且你不出结果是你的电脑运行太慢,你没耐心等待的结果:
我学的C,只能看你循环那里的代码了
完数的概念为除以自身外恰好等于它的因子之和,这个数就叫完数
所以把第16的=去掉就行 本帖最后由 南七 于 2020-6-22 09:27 编辑
那个amount++的位置不对,得在内层循环下面写个if(sum==1){amount++},然后就是16行那个n<=i改成n<i或者n<=i/2,最后个人认为if (sum == i)和if (amount % 5 == 0)这俩没有啥必要写诶。新号比较捞没法上传图片,不然可以直接带图,这样看得去更清晰点,代码如下,楼主可以运行一下康康。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i, n,sum, amount = 0;
for (i = 1; i < 1000; i++)
{
sum = 0;
for (n = 1; n < i/* n <= i/2 */; n++)
{
if (i % n == 0)
{
sum += n;
}
}
if(sum==i)
{
amount++;
cout<< i << endl;
}
/* if (sum == i)
cout << setw(5) << i;
if (amount % 5 == 0)
cout << endl; */
}
cout << "1000以内总共有" << amount << "个完数";
system("pause");
return 0;
}
}
页:
[1]