原题链接:[编程入门]完数的判断
0.0分
311 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int wansu(int x); void display (int x); int main() { int x,ad; scanf("%d",&x); for(ad=2;ad<=x;ad++) { if(wansu(ad)) { display (ad); } } return 0; } int wansu(int x)//判断是否为完数 { int id,sum; for(id=1,sum=0;id<=(x/2);id++) { if(x%id==0) { sum=sum+id; } } if(sum==x) return 1; else return 0; } void display (int x) { int id; printf("%d its factors are ",x); for(id=1;id<=(x/2);id++) { if(x%id==0) { printf("%d ",id); } } printf("\n"); }#include<stdio.h> #include<math.h> #include<string.h> int main() { int n; scanf("%d",&n); int i,j,k; int a[100]; int sum=0; int count=0; for(i=2;i<=n;i++){ for(j=1;j<i;j++){ if(i%j==0){ sum=sum+j; // printf("%d ",sum); a[count]=j; count++; } }if(sum==i){printf("%d its factors are ",i); for(k=0;k<count;k++){ printf("%d ",a[k]); } printf("\n"); } sum=0; count=0; } }#include <stdio.h> //求完数,即A%B=0 int main(void) { //第一步先求出这个数的因子 int n; int arr[] = {0}; scanf("%d", &n); for (int i = 1; i <= n; i++) { int temp = 0;//temp为各因子之和 int k = 0; //内循环求因子 for (int j = 1; j<i; j++) { if (i % j == 0) { temp += j; arr[k]=j;//求出每个因子放在数组arr[]中 k++; } } //判断是否为完数 if(temp==i) { printf("%d its factors are", i); for (int x = 0; x< k; x++) { printf(" %d", arr[x]); } printf("\n"); } } return 0; } 答案为0 不知道是为啥啊@格温之死 #include<stdio.h> void factor(int i) { int n,k; for(n=1;n<i;n++){ k=i%n; if(k==0){ printf("%d ",n); } } printf(" "); } int main() { int n=6,i,k,j,sum; scanf("%d",&n); for(i=2;i<=n;i++){ sum=0; for(k=1;k<i;k++){ j=i%k; if(j==0){ sum+=k; } } if(sum==i){ printf("%d its factors are ",i); factor(i); } } return 0; }#include<stdio.h> int main() { int a,b,count=0,N; scanf("%d",&N); for(a=2;a<=N;a++){ for(b=1;b<=(a/2);b++) { if(a%b==0) count+=b; } if(count==a) { printf("%d its factors are",a); for(b=1;b<=(a/2);b++){ if(a%b==0) printf(" %d",b); } printf("\n"); } count=0; } }#include<stdio.h> int main() { int a; int num=0; scanf("%d",&a); for(int i=1;i<a;i++) { int num =0; for(int j=1;j<i;j++) { if(i%j==0) num+=j; if(i==num) printf("%d\n",i); } } return 0; } 各位大佬,为什么我在内层循环里面加了两个花括号会显示输出超限???#include<stdio.h> void sss(int a) //求因数 { int i,j,sum; sum=0; for(i=1;i<a;i++) { if(a%i==0) { j=i; sum+=j; //求完数 } } if(sum==a) { printf("%d its factors are ",a); for(i=1;i<a;i++) { if(a%i==0) printf("%d ",i); } printf("\n"); } } int main() { int n,i; scanf("%d",&n); for(i=1;i<n;i++) sss(i); return 0; }