感谢大佬,完美复刻
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");
}
}
哪位兄弟帮我指正一下,为什么我这个结果输出里面会多出一个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; } 我擦思路一模一样#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数都对。感谢大佬,完美复刻 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"); } }