| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1663 人关注过本帖
标题:有关打素数表的问题
只看楼主 加入收藏
xry123
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2016-2-10
结帖率:100%
收藏
 问题点数:0 回复次数:0 
有关打素数表的问题
自己写的是埃式筛,当素数最大值破1亿的时候时间要2S以上,网上的所谓线性时间筛法代码如下:
#include<iostream>  
using namespace std;      
const long N = 200000;     
long prime[N] = {0},num_prime = 0;      
int isNotPrime[N] = {1, 1};     
int main()      
{      
        for(long i = 2 ; i < N ; i ++)         
        {              
        if(! isNotPrime[i])                 
            prime[num_prime ++]=i;   
        //关键处1         
        for(long j = 0 ; j < num_prime && i * prime[j] <  N ; j ++)  
            {                 
                isNotPrime[i * prime[j]] = 1;   
            if( !(i % prime[j] ) )  //关键处2                    
                break;            
        }         
    }         
    return 0;     
}
不知道为什么当把N调到1亿时进行编译要过好久才会显示出控制台并且也没有那么快,是编译器的问题吗?
还有就是,除了这个以外有没有其他的可以1S内把1亿以内的素数打表的方法?
搜索更多相关主题的帖子: include 最大值 网上 
2016-02-20 21:38
快速回复:有关打素数表的问题
数据加载中...
 
   



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

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