输入正整数n(n>1),编程找出n以内的所有完数并输出其因子。
输入格式:1000
输出格式:6(1,2,3);28(1,2,4,7,14);496(1,2,4,8,16,31,62,124,248);(注意:式子中所有符号均为英文状态下的符号)
*/
#include<stdio.h> main() { int n,i,j,k=0,sum=0,a[100]; printf("请输入一个数字\n"); scanf("%d",&n); for(i=1;i<=n;i++) { sum=0; k=0; for(j=1;j<i;j++) { if(i%j==0) { a[k++]=j; sum+=j; } } if(sum==i) { printf("%d",j); printf("("); while(k--) printf("%d, ",a[k]); printf(")"); printf("\n"); } } printf("\n"); }
#include<stdio.h> int main() { int i, j; int sum;//求所有因子的和 int n;//输入一个数的范围 比如:1000 int count,count1;//count 用于控制某个数的因子的个数 count1用于计数 scanf("%d",&n); for (i = 2; i <= n; i++)//首先排除输出没有1 可以直接略去 { count1 = 0; count = 0; sum = 0;//这三个赋值为0 的是每次循环数时重新赋值 for (j = 1; j < i; j++) { if (i % j == 0) { sum += j;//计算因子的和 count++;//计算因子的个数 } } if (sum == i)//当因子的和等于它对应的数时 才开始下面 { printf("%d(",sum); for (j = 1; j < sum; j++) { if (sum % j == 0) { printf("%d",j); count1++; if (count1 == count)//为什么要计个数呢?主要是对最后一个格式的输出 不然多了 , { printf(");"); break; } printf(","); } } } } return 0; }谢谢!!!