#include<iostream>
using namespace std;
//编译没有问题,但是跑不出来
int main() {
int i,j,k=1,total;
for (i = 2; i < 1000; i++) {
total = 0;
for (j = 1; j <= (int)sqrt(i); j++) {
if ((i % j) == 0)total = total + j;
if (total == i) {
cout << i;
cout << "它的因数为" << endl;
for (k = 1; k <= (int)sqrt(i); k++)
if (i % k == 0) cout << k << ' ';
cout << endl;
}
}
}
return 0;
}
这样???
#include<iostream>
using namespace std;
//编译没有问题,但是跑不出来
int main() {
int i, j, k = 1, total;
for (i = 2; i < 1000; i++) {
total = 0;
for (j = 1; j <= /*(int)sqrt(i)*/i; j++) {
if ((i % j) == 0) total = total + j;
if (total == i) {
cout << i;
cout << "它的因数为" << endl;
for (k = 1; k <= /*(int)sqrt(i)*/i; k++)
if (i % k == 0) cout << k << ' ';
cout << endl;
}
}
}
return 0;
}
请问完数的定义是什么? 你的程序没有任何输出?请打印出 total 和 i 的值, 看看他们是怎么变化的。
错误有两个:①前两个for语句里面的i的条件设置错误,应该是<i,而不是<i的平方根;
②输出因数的时候,不能将判断因数之和是否等于i的if语句放在找完数的for语句中