#include<stdio.h> int main(){ int N,a,b,c,d; c=0; d=1; a=1; b=1; scanf("%d",&N); while(a<N) { a++; while(b<a) { if(a%b==0) { c=c+b; if(a==c) { printf("%d its factors are %d",c,b); printf("\n"); } } b++; } b=d; } return 0; } 大家能帮忙看看我这个哪里错了
这寻找完数难道有什么简便算法吗?我测的时间是855ms 都要超时了
H2330819071 2023-11-19 12:53:04 |
j<i可以改成j<=i/2
狂拽斌少 2023-11-19 15:10:26 |
谢谢
#include<stdio.h> int main() { int N, i, j; scanf("%d", &N); for (i = 2; i <= 1000; i++) { int sum = 0; for (j = 1; j <= i - 1; j++) { if (i % j == 0) { sum += j; } } if (sum == i) { printf("%d its factors are ", i); for (j = 1; j <= i - 1; j++) { if (i % j == 0) { printf("%d ", j); } } printf("\n"); } } } 求个大佬! 这个运行结果和题目的样例一样,为什么错误啊
cdsg 2023-10-29 10:49:38 |
你这个跟输入的数毫无关系了,因为你i遍历到1000,比如输入n=20,输出还是那三行
cdsg 2023-10-29 10:53:19 |
咱都是初学者,加个好友有问题时候交流一下呗
没素质 2023-11-04 22:44:10 |
@dotcpp0701227 为什么输出那里作者不输出数组,按照他这个我输出不出来各个因子
cdsg 2023-11-06 11:26:07 |
@dotcpp0701113 数字数组不能整体输出,只能挨个循环遍历输出。字符串数组可以整体输出
cdsg 2023-11-06 11:26:22 |
@dotcpp0701113 数字数组不能整体输出,只能挨个循环遍历输出。字符串数组可以整体输出
没素质 2023-11-07 16:57:38 |
@dotcpp0701227 谢谢谢谢谢谢,悟了
#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这个数。要双循环做
uq_72670706696 2024-01-18 20:19:49 |
c就是求和的需要重置
uq_72670706696 2024-01-18 20:21:50 |
还有你这个可能算一半的时候就等于了,但这个数不是完数