3346 - 习题5-9 完数
一个数如果恰好等于它的因子和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,所以6是“完数”。
编程输出1000以内的所有完数,每个完数输出一行,并按下面的格式输出其因子:
6 its factors are 1,2,3
题目输入
无
题目输出
每个完数输出一行,并按下面的格式输出其因子:
? its factors are ?,?,?
输入/输出样例
题目输入
无
题目输出
6 its factors are 1,2,3 28 its factors are 1,2,4,7,14 496 its factors are 1,2,4,8,16,31,62,124,248
提示
因子包含1但不包含其本身。
C语言解答
#include <stdio.h> int main() { int j, k, s, i, a[20], b; for (j = 1;j <= 1000;j++ ) { i = 0; s = 0; for (k = 1;k < j;k++) { if (0 == (j%k)) s = s + k; } if (s == j) { printf("%d its factors are ", j); for (k = 1;k < j;k++ ) { if (0 == (j%k)) { a[i] = k; i++; } } for (b = 0;b < i;b++ ) { if (b != (i-1)) printf("%d,", a[b]); else if (6 == j) printf("%d\n", a[b]); else printf("%d \n", a[b]); } } } }
C++解答
#include<iostream> using namespace std; int main() { int t=0; for (int i=6; i<=1000; i++) { int sum=0; for (int j=1; j<=i/2; j++) if (i%j==0) sum+=j; if (i==sum) { t++; cout<<i<<" its factors are "<<1; for (int j=2; j<=i/2; j++) if (i%j==0) cout<<","<<j; if (t==1) cout<<endl; else cout<<" "<<endl; } } return 0; }
提示
因子包含1但不包含其本身。