找完全數
成績: 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 a,i,j=0,s=0,n,b[4];
scanf("%d",&n);
for(a=2;a<=20000;a++)
{
for(i=1,s=0;i<a;i++)
{
if(a%i==0) s=s+i;
}
if(s==a) {b[j]=a;j++;}
}
printf("%d\n",b[--n]);
return 0;
}
請問這個程序有啥錯誤,vc上運行結果正確,但是提交到學校平台上顯示無結果,超出時間限制。
#include<stdio.h>
#include<time.h>
int main()
{
clock_t t_s,t_e;
int a,i,j=0,s=0,n,b[4];
scanf("%d",&n);
t_s = clock();
for(a=2;a<=20000;a++)
{
for(i=1,s=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\n",b[--n]);
printf("Time used:%fs\n",t);
return 0;
}
我用上面的代碼測試了程序運行時間,沒什麼問題啊~
你那個學校平台是怎麼個情況?程序在我看來沒什麼大問題(可以再省略一部分循環次數的)。