文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>poj2262筛子法素数打表

poj2262筛子法素数打表

时间:2011-04-29  来源:Veegin

素数打表:

void oddp()
{
        int i,j;
        for(i=0;i<1000000;i++) a[i]=1;
        a[0]=0; a[1]=0;
        for(i=2;i<1000000;i++)
        {
                if(a[i]==1)
                {
                        for(j=i*2;j<1000000;j+=i) a[j]=0;
                }
        }
}

结合POJ2262代码:

int main()
{
        int num;
        int i,flag;
        oddp();
        while(scanf("%d",&num)!=EOF&&num!=0)
        {
                for(flag=0,i=2;i<num;i++)
                {
                        if(a[i]==1&&a[num-i]==1)
                        {
                                printf("%d = %d + %d\n",num,i,num-i);
                                flag=1;
                                break;
                        }
                }
                if(flag==0)
                        printf("Goldbach's conjecture is wrong.\n");
        }
        return 0;
}
   瓶颈就在这里,之前用的是O(n^2),这里的时间复杂度O(n),速度大大提升了,因此不会超时而通过了。

    这到题的收获是,铸聪师兄教会我算时间复杂度,和筛子法求素数打表。在这里感谢师兄不厌其烦地给我分析,讲解,谢谢师兄!

相关阅读 更多 +
排行榜 更多 +
无限Fps

无限Fps

飞行射击 下载
幸存者时间僵尸

幸存者时间僵尸

飞行射击 下载
金属兄弟Metal Brother

金属兄弟Metal Brother

冒险解谜 下载