#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; } //想知道错在哪,为什么输出不出内容
清欢 2024-03-07 20:22:18 |
没事了
#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; }
5eL1n 2024-02-29 15:17:18 |
确实,人家空间换时间,你时间换空间
写出来跟测试的结果完全一致,不知道哪里出问题了 #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"); } } }
qz 2024-01-31 21:15:14 |
k用完之后要=0吧
#include<stdio.h> int main() { int i,j,N,l; int sum=0,k=0; int x[100]; scanf("%d",&N); for(i=1;i<=N;i++) { for(j=1;j<i;j++) { if(i%j==0) { sum+=j; x[k]=j; k++; } } if(sum==i) { printf("%d its factors are",i); for(l=0;l<k;l++) { printf(" %d",x[l]); } printf("\n"); } sum=0; k=0; } return 0; } 我这个也可以
uq_72670706696 2024-01-18 19:50:44 |
你这个和上面没啥区别就是把重置放后面了
请大佬帮忙看一下,感觉思路都一样的不知道出错在哪里 我调试的结果: 6 its factors are 1 2 3 28 its factors are 1 2 4 7 14 问题在第三行没有出现 #include<stdio.h> void main() { int i,n,u,k; int a[15],m=0; scanf("%d",&n); for(u=1;u<=n;u++) { k=u; for(i=1;i<=u/2;i++) { if(u%i==0) { k=k-i; a[m]=i; m++; } } if(k==0) { printf("%d its factors are",u); for(i=0;i<m;i++) printf(" %d",a[i]); printf("\n"); } m=0; } }
dotcpp0686717 2024-01-04 15:11:53 |
a[i]炸了
uq_72670706696 2024-01-18 19:54:08 |
应该不是吧,a【i】在这个里面最多没有超过15,难道是还没有到这个数之前有一个数有超过15个的
uq_72670706696 2024-01-18 19:57:58 |
@dotcpp0686717 我复制尝试了一下显示*** stack smashing detected ***: <unknown> terminated :Aborted溢出了
uq_72670706696 2024-01-18 19:58:16 |
@dotcpp0686717 对不起哈,我不知道怎么删除@
锐锐 2024-01-22 16:40:54 |
哪有a
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:526 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:632 |
简单的a+b (C语言代码)浏览:942 |
一元一次方程 (C语言代码)浏览:4049 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:549 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:558 |
1392题解(大数相加)浏览:601 |
求圆的面积 (C语言代码)浏览:657 |
字符串的修改 (C语言代码)浏览:1137 |
母牛的故事 (java语言代码)浏览:880 |
盛世致远 2024-04-14 21:53:55 |
当i=24时,第12行代码sum=24时直接输出了number[i],你将第二个if给提出来就可以解决这个问题。有兴趣的话可以加个QQ一起讨论以下怎么学习C语言吗?1707999651我是大学生