原题链接:[编程入门]完数的判断
0.0分
311 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> int main(){ int N; scanf("%d",&N); int number[N]; int i,j,sum=0; for(i=0;i<N;i++){ number[i]=i+4; sum=0; for(j=1;j<number[i];j++){ if(number[i]%j==0){ sum+=j; if(number[i]==sum){ printf("%d\n",number[i]); } } } } return 0; } 各位大佬,能不能帮忙看看,当我键入N=1000的时候,会多一个24出来,其他的结果和题目给的例子是符合的,想知道是哪里出了问题#include<stdio.h> int main() { int N,sum=0,k; char arr[1001]="0"; scanf("%d",N); for(int i=1;i<=N;i++) { sum=0,k=0; for(int j=1;j<i;j++) { if(i%j==0) { sum+=j; arr[k++]=j; } } if(sum==i){ printf("%d its factors are",i); for(int l=0;l<k;l++){ printf(" %c",arr[l]); } printf("\n"); } } return 0; } //想知道错在哪,为什么输出不出内容#include<stdio.h> int main() { int N; scanf("%d",&N); for(int i=2;i<=N;i++){ int sum=0; for(int j=1;j<i;j++){ if(i%j==0){ sum+=j; } } if(sum==i){//找到完数立马循环输出因子 printf("%d its factors are",i); for(int j=1;j<i;j++){ if(i%j==0){ printf(" %d",j); } } printf("\n"); } } return 0; }看我这个 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[100] = { 0 }; for (int i = 6; i <= n; i++) { int c = 0,d=0; for (int j = i; j >= 2; j--) { if (i % j == 0) { arr[c++] = i / j; d += (i / j); } } if (d == i) { printf("%d its factors are ", i); for (int e = 0; e < c; e++) { printf("%d ", arr[e]); } printf("\n"); } } return 0; }不用数组也是可以的 #include<stdio.h> int main() { int n,i,j; scanf("%d",&n); for(i=1;i<=n;i++) { int x=0; for(j=1;j<i;j++) if(i%j==0) { x+=j; } if(x==i) { printf("%d its factors are ",i); for(j=1;j<x;j++) { if(x%j==0) { printf("%d ",j); } } printf("\n"); } } return 0; }写出来跟测试的结果完全一致,不知道哪里出问题了 #include<stdio.h> int main() { int n,i,j,k; scanf("%d",&n); for(i=1;i<=n;i++){ int sum=0; for(j=1;j<i;j++){ if(i%j==0){ sum+=j; } } if(sum==i){ printf("%d its factor are",i); for(k=1;k<i;k++){ if(i%k==0){ printf(" %d",k); } } printf("\n"); } } }