输出 1 到 100 之间的所有完数。要求定义和调用函数is(n)判断n是否为完数,若n为完数则返回1,否则返回0。完数就是因子和与它本身相等的数,6是完数(6=1+2+3),1不是完数。

img


#include "iostream"

int is(int n);

int main() {
    int i;
    for (i = 1; i <= 100; i++) {
        if (is(i)) {
            printf("%d ", i);
        }
    }
    return 0;
}

int is(int n) {
    int i, sum;
    if (n==1) return 0;
    sum = 0;
    for (i = 1; i <= n / 2; i++) {
        if (n % i == 0) {
            sum = sum + i;
        }
    }
    if (sum == n)return 1;
    else return 0;
}