程序填空题:输出 1 到 100 之间的所有完数[2]
输出 1 到 100 之间的所有完数。要求定义和调用函数`is(n)`判断$$n$$是否为完数,若$$n$$为完数则返回1,否则返回0。完数就是因子和与它本身相等的数,6是完数(6=1+2+3),1不是完数。
```c++
#include
int is(int n);
int main(void)
{
int i;
for (i = 1; i <= 100; i++){
if ( @@[is(i)](1) ){
printf("%d ", i);
}
}
return 0;
}
int is (int n)
{
int i, sum;
sum = 0;
for (i = 1; i <= n/2; i++){
if (@@[n%i == 0](1)){
sum = sum + i;
}
}
if (@@[sum == n](1)) {
return 1;
}else{
return 0;
}
}
```
答案:
第1空:is(i)
第2空:n%i == 0
第3空:sum == n
```c++
#include
int is(int n);
int main(void)
{
int i;
for (i = 1; i <= 100; i++){
if ( @@[is(i)](1) ){
printf("%d ", i);
}
}
return 0;
}
int is (int n)
{
int i, sum;
sum = 0;
for (i = 1; i <= n/2; i++){
if (@@[n%i == 0](1)){
sum = sum + i;
}
}
if (@@[sum == n](1)) {
return 1;
}else{
return 0;
}
}
```
答案:
第1空:is(i)
第2空:n%i == 0
第3空:sum == n