哪位兄弟帮我指正一下,为什么我这个结果输出里面会多出一个24啊, #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=sum+j; if(sum==i&&sum!=1) { printf("%d ",sum); printf("its factors are "); for(k=1;k<=sum;k++) { if(sum%k==0)printf("%d ",k); } printf("\n"); } } } } return 0; }
#include <stdio.h> #include <math.h> int main() { int n,j,i; scanf("%d",&n); for(i=1;i<=n;i++) { int a[i],k=0,sum=0; for(j=1;j<i;j++) if(i%j==0) { a[k++]=j; sum+=j; } if(sum==i) { printf("%d its factors are",i); for(j=0;j<k;j++) printf(" %d",a[j]); printf("\n"); } } return 0; } 我擦思路一模一样
一 2022-11-17 14:21:33 |
int i; int j; int k; int a[1000]; int l=0; scanf("%d", &j); for (i = 1; i <= j; i++) { int sum = 0; int n = 0; for (k = 1; k <= i; k++) { if (i % k == 0) { a[n++] = k; sum = sum + k; } } if (sum == i) { printf("%d its factor are ",i); for (l=0;l < n;l++) { printf("%d", a[l]); } printf(" "); } } 为什么我的代码是错的?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { int n,j,i,a[1001]={0}; while(scanf("%d",&n)!=EOF) { printf("%d its factors are 1",n); for(i=2;i<n/2+1;i++) { for(j=i+1;j<n;j++) { if(i*j==n) {a[i]=i; a[j]=j;} } } for(i=0;i<n;i++) { if(a[i]!=0) printf(" %d",a[i]); } printf("\n"); for(i=0;i<n;i++) a[i]=0; } re数都对。
水星记111 2022-07-12 09:18:07 |
老实运行错误
兄弟,你再试着输入一下大于6的值,你会发现结果一直是 6 its factors are 1 2 3。所以你这是因为6之前没有合适的值,穷举出来的等于是。
感谢大佬,完美复刻 int num, i, N, k, Sn; scanf("%d", &N); int a[1000]; for(num=1;num<=N;num++){//scan the numbers under the N for(i=1, k=0, Sn=0;i<num;i++){//find its factors and record it if(num%i==0){ a[k++]=i; Sn = Sn + i;//count the sum of arrys } } if(Sn==num){//put out result of completed number printf("%d its factors are", num); for(i=0;i<k;i++){ printf(" %d", a[i]); } printf("\n"); } }
这个会打印输出,剩下的自己写吧 void Check(int data) { int sum = 0; for(int i= 1;i < data;i++) { if(data % i == 0) { sum += i; } } if(sum == data) { printf("%d its factors are ",data); for(int i= 1;i < data;i++) { if(data % i == 0) { printf("%d " ,i); } } printf("\n"); } }
mrbidor 2022-10-21 12:00:26 |
你这个是每加一个因数就判断因数和与原数是否相等,判断24的时候,因数到了8就和原数相等了,直接就输出了
IAN 2022-10-21 19:38:51 |
嗯,我已经解决了。
洛顾劢 2022-10-24 21:40:41 |
为什么后面两个for循环不能是j小于等于i
IAN 2022-10-25 07:41:05 |
@uq_37579840303 那就包含这个数本身了,就不能符合完数了