标题:素数问题,。自己测试没问题,但是上交会报TIME LIMIT EXCEED
只看楼主
qi411912991
Rank: 2
等 级:论坛游民
帖 子:20
专家分:11
注 册:2012-3-11
结帖率:75%
已结贴  问题点数:10 回复次数:4 
素数问题,。自己测试没问题,但是上交会报TIME LIMIT EXCEED

下面我的代码:
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,k,i,j,m,n=0;
    scanf("%d",&k);
    while(k--)
    {
        scanf("%d%d",&a,&b);
        for(i=a;i<=b;i++)
        {
            m=0;
            for(j=2;m==0&&j<=sqrt(i);j++)
            if(i%j==0) m=1;
            if(m==0) n++;
        }
        printf("%d\n",n);
        n=0;
    }
}
求大神指出问题,为什么会报超时。
搜索更多相关主题的帖子: 测试 上交 
2012-12-05 10:26
Fisher~
Rank: 4
等 级:业余侠客
帖 子:93
专家分:222
注 册:2012-11-10
得分:5 
这时间复杂度也太高了
2012-12-05 10:32
qi411912991
Rank: 2
等 级:论坛游民
帖 子:20
专家分:11
注 册:2012-3-11
得分:0 
回复 2楼 Fisher~
请教2楼。。。
2012-12-05 10:33
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
得分:5 
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,k,i,j,m,n=0;
    scanf("%d",&k);
    while(k--)
    {
        scanf("%d%d",&a,&b);
        for(i=a;i<=b;i++)
        {
            m=0;
            for(j=2;m==0&&j<=sqrt(i);j++)//用个变量存储sqrt(i)的结果,不然每次循环都要执行一次,
            if(i%j==0) m=1;//不用m=1,如果不是就用break,循环外判断j是否大于sqrt(i)来确定是不是素数,
            if(m==0) n++;
        }
        printf("%d\n",n);
        n=0;
    }
}


下面我修改过的:
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,k,i,j,m,n=0;
    scanf("%d",&k);
    while(k--)
    {
        scanf("%d%d",&a,&b);
       
        for(i=a;i<=b;i++)
        {
            m=sqrt(i);
            for(j=2;j<=m;j++)
            if(i%j==0) break;
            if(j>m) n++;
        }
        printf("%d\n",n);
        n=0;
    }
}



[ 本帖最后由 heroinearth 于 2012-12-5 11:01 编辑 ]
2012-12-05 10:52
qi411912991
Rank: 2
等 级:论坛游民
帖 子:20
专家分:11
注 册:2012-3-11
得分:0 
回复 4楼 heroinearth
依旧超时。
2012-12-05 11:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-389680-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.617989 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved