关于编译超时问题
本帖最后由 Sj中国智造 于 2017-10-27 18:58 编辑#include <stdio.h>
#include <math.h>
int main()
{
int n,i,century=0,year;
int k,m=0;
scanf("%d",&n);
while(m < n){
i = 0;
for(year = century*100+1;year <= century*100+99;year+=2){
for(k = 2;k <= pow(year,0.5);k++){
if(year%k == 0){
i++;
break;
}
}
if(k == pow(year,0.5)+1) break;
}//12至18行代码判断奇数年份是否为合数,若是,i++;
century++;
if(i == 50) m++;//若满足说明该世纪为合数世纪。
}
century--;//跳出时多加了一次。
printf("%d %d",(century*100),(century*100+99));
return 0;
}
这是我编的代码,用时要10s。
#include<stdio.h>
int main()
{
int n,i=500,s,x,count=0;
long j,k;
scanf("%d",&n);
while(count<n)
{
s=0;
for(j=i*100-99;j<i*100;j+=2)
{
x=0;
for(k=3;k*k<=j;k+=2)
if(j%k==0)
{
x=1;
break;
}
s+=x;
}
if(s==50)
count++;
i++;
}
printf("%d %d",j-101,j-2);
return 0;
}
这是参考答案,运行只要1s多。
我想不通,我的代码哪里慢了这么多,求大神解 求教大神 Sj中国智造 发表于 2017-10-28 22:49
求教大神
不要沉啊
顶一下 ??输入数字了什么都没发生??? 哈??? 看看 看看 看看
页:
[1]