#include<stdio.h> int main() { int n,i,j; scanf("%d",&n);//读入n for(i=1; i<=n; i++) { //遍历1~n int tem=0; //每次内层循环结束tem重新赋值为0 for(j=1; j<i; j++) { //判断是否为完数 if(i%j==0) { // 判断是否为因子 tem+=j; //因子求和 } } if(tem==i) { //因子和等于本身即为完数-->输出 printf("%d\n",i); } } return 0;
我的做法,提交错误,有什么问题么 #include<stdio.h> int main() { int N,i,s=0; scanf("%d",&N); for(i=1;i<N;i++) if(N%i==0) s+=i; if(s==N) { printf("%d its factors are",N); for(i=1;i<N;i++) if(N%i==0) printf("%d ",i); printf("\n"); } return 0; }
答主,第二种解法中,为什么不考虑数组的a[ ]的重置呢?尽管答案是对的,但感觉这里需要完善一下~
l 2021-10-30 23:31:44 |
k之前的都是这次的,不会输出k后边的
分享 另外一种做法 不需要数组 : #include<stdio.h> int main(){ int n,i,j,tem; scanf("%d",&n); for(i=1;i<=n;i++){ tem=0; for(j=1;j<i;j++){ if(i%j==0){ tem+=j; } } if(tem==i){ printf("%d its factors are",i); for(j=1;j<i;j++){ if(i%j==0){ printf(" %d",j); } } printf("\n"); } } }
蛇行矩阵 (C语言代码)浏览:606 |
关于C语言变量位置的问题浏览:294 |
数对 (C语言代码)浏览:762 |
Hello, world! (C语言代码)浏览:766 |
核桃的数量 (C语言代码)浏览:893 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:644 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:331 |
前10名 (C语言代码)浏览:773 |
简单的a+b (C语言代码)浏览:683 |
1021王俊峰 2022-01-25 09:26:21 |
你是来搞笑的吗