1168 - C语言6.16
一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。找出1000之内的所有完数,并输出。
Input
无
Output
每一个完数一行。在每一行中,首先输出这个完数的值,再输出一个冒号,之后从小到大输出这个完数的所有因子,在每个因子前输出一个空格。
请注意行尾输出换行。
Examples
Input
无
Output
6: 1 2 3 28: 1 2 4 7 14 496: 1 2 4 8 16 31 62 124 248
Solution C
#include<stdio.h> int main(){ int i,j,k; int sum=0; int a[50]; for(i=1;i<=1000;i++){ k=0; sum=0; for(j=1;j<i;j++) if(i%j==0) a[k++]=j; for(j=0;j<k;j++) sum+=a[j]; if(sum==i){ printf("%d:",i); for(j=0;j<k;j++) printf(" %d",a[j]); printf("\n"); } } return 0; }
Solution C++
#include <stdio.h> int main() { int i, j, sum; for (i = 1;i <= 1000;i++) { sum = 0; for (j = 1;j < i;j++) if (i % j == 0) sum += j; if (sum == i) { printf("%d:", i); for (j = 1;j < i;j++) if (i % j == 0) printf(" %d", j); printf("\n"); } } return 0; }