Sj中国智造 发表于 2017-10-27 18:36:33

关于编译超时问题

本帖最后由 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:59

求教大神

Sj中国智造 发表于 2017-10-30 08:23:09

Sj中国智造 发表于 2017-10-28 22:49
求教大神

不要沉啊

小小小菜菜菜 发表于 2018-12-20 19:32:44

顶一下

1809228982 发表于 2018-12-21 11:40:07

??输入数字了什么都没发生???

X用户 发表于 2018-12-21 16:43:45

哈???

天辰萌新 发表于 2018-12-22 14:42:29

看看

扩展阅读 发表于 2018-12-24 11:40:51

看看

天宇 发表于 2019-1-3 12:46:41

看看
页: [1]
查看完整版本: 关于编译超时问题