#include<stdio.h> int main() { int a; scanf("%d", &a); for (int i = 1; i <= a; i++) { int b = 0; for (int j = 1; j < i; j++) { if (i % j == 0) { b += j; } } if (b == i) { printf("%d its factors are ", i); for (int k = 1; k < i; k++) { if (i % k == 0) { printf("%d ",k); } } printf("\n"); } } return 0; }
#include<stdio.h> int main() { int n,i,s,a[100],m; scanf("%d",&n); for(i=1;i<=n;i++) { s=m=0; for(int k=1;k<i;k++) { if(i%k==0) { a[m]=k; s+=a[m]; m++; } } if(s==i) { printf("%d its factors are ",i); for(int z=0;z<m;z++) { printf("%d ",a[z]); } printf("\n"); } } getchar(); getchar(); return 0; }//不知道为什么我的时间超限了
有大佬指点为什么错了么,运行测试都没问题,没明白 #include<stdio.h> int test(int x,int y) { if(y%x==0) return 0; else return 1; } int main() { int a,sum=0,b[100]={0},c=0; scanf("%d",&a); for(int i=1;i<a;i++) { if(test(i,a) == 0) { b[c]=i; sum += i; c++; } } if(sum == a) { printf("%d its factors are ",a); for(int i=0;i<c;i++) printf("%d ",b[i]); } return 0; }
南初 2023-03-08 19:55:51 |
if(test(i,a)==0)这里,人家求的是1000内的所有完数,不是求1000这个数。要双循环做
#include<stdio.h> int main() { int N,i,j,sn,s[1000],k,l; scanf("%d", &N); for(i=2;i<=N;i++) { for(sn=0,j=1,k=0;j<=i/2;j++)//变成到i/2可以不超时 { if((i%j)==0) { sn=sn+j; s[k++]=j; } } if(sn==i) { printf("%d its factors are ",i); for(l=0;l<k;l++) {printf("%d ",s[l]);} printf("\n"); } } return 0; }
#define max 1001 有没有大佬告诉我这个是什么意思
幸 2023-02-22 17:03:41 |
宏定义意思等同于max = 1001,如果下面用的比较的宏定义是很方便的
为什么把你的代码提交上去却超时了
uq_47536912922 2023-02-06 15:11:44 |
#include<stdio.h> void wanshu(int n) { int i,j=0; int b=0; int a[n]; for(i=1;i<n;i++) { if(n%i==0) { a[j]=i; b+=a[j]; j++; } } if(b==n)//判断是否为完数 { printf("%d its factors are ",n); for(i=0;i<j;i++) { printf("%d ",a[i]); a[i]=0; } printf(" "); } } int main() { int i; int n; scanf("%d",&n); for(i=2;i<=n;i++) { wanshu(i); } return 0; }
十九 2023-02-08 15:16:51 |
精简一下能到900ms
求个大佬告诉我为什么错啊 #include <stdio.h> int main() { int n,i,j,ch[100]={0},m=0,x=0; scanf("%d",&n); for(i=2;i<=n;i++) { for(j=1;j<=i/2;j++) { if(i%j==0) {m+=j;ch[x++]=j;} } if(m==i) { printf("%d its factors are ",i); for(x=0;ch[x]!=0;x++) printf("%d ",ch[x]); printf("\n"); } m=0;x=0;ch[100]={0}; } return 0; }