|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*
- 一个数恰好等于它的因子之和,这个数就叫完数
- */
- #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以内的完数的代码
完数的解释在注释中给出
但是运行代码最后什么都没输出出来
大神们能给看看问题出在哪了吗
本帖最后由 南七 于 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;
- }
复制代码
}
|
|