问题描述
- c语言求完全数问题求助~~
- 找完全数
成绩: 10 / 折扣: 0.8
完全数是其各因子之和正好等于本身的数,如6=1+2+3,28=1+2+4+7+14所以6,8都是完全数,请编程找出2-20000内的所有完全数.输入整数n,输出第n个完全平方数。#include<stdio.h>int main(){ int aij=0s=0nb[4]; scanf(""%d""&n); for(a=2;a<=20000;a++) { for(i=1s=0;i<a;i++) { if(a%i==0) s=s+i; } if(s==a) {b[j]=a;j++;} } printf(""%d ""b[--n]); return 0;}
解决方案
#include<stdio.h>#include<time.h>int main(){ clock_t t_st_e; int aij=0s=0nb[4]; scanf(""%d""&n); t_s = clock(); for(a=2;a<=20000;a++) { for(i=1s=0;i<a;i++) { if(a%i==0) s=s+i; } if(s==a) {b[j]=a;j++;} } t_e = clock(); double t = (t_e-t_s)/CLOCKS_PER_SEC; printf(""%d
""b[--n]); printf(""Time used:%fs
""t); return 0;}
我用上面的代码测试了程序运行时间,没什么问题啊~
你那个学校平台是怎么个情况?程序在我看来没什么大问题(可以再省略一部分循环次数的)。
解决方案二:
1.
20000以内只有4个完全平方数。但是事先不知道。
所以数组b设大一点: b[10]
2.万一输入5你的程序就出错了。要加个判断:
if(n<=j) printf(""%d
""b[--n]); else printf(""未找到。"");
解决方案三:
超出时间限制,如果有这问题的话,应该是你的程序运行时间太久了,
在判断的时候,
for(i=1s=0;i<=a/2;i++) { if(a%i==0) s=s+i; }
你试试
解决方案四:
c语言 完全数
时间: 2024-09-12 16:32:33