码迷,mamicode.com
首页 > 其他好文 > 详细

线性筛素数的方法

时间:2014-06-16 00:39:33      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

bubuko.com,布布扣
int n , a[100] , p[100];
void prime2(){
    memset(a , 0 , n * sizeof(a[0])) ;   //初始都为素数
    int num = 0 , i , j ;
    for( i =2 ; i <= n ; i++){
        if(!a[i]) p[num++] = i ;   // 质数表p[]
        for(j = 0 ; j<num && i * p[j] <= n ; j++){
            a[i * p[j]] = 1 ; // 筛以 i 为最大因子 的合数 
            if(!(i % p[j])) break ;  // 找到i 的最小素因子 , 终止
        }
    }
}
bubuko.com,布布扣

结论:

1: 对于每一个数i,乘上   小于等于i的最小素因数p    的素数,就得到以i为最大因数的合数 T = i * p。

2: 设有一个数t,只要将所有以比t小的数i为最大因数的合数筛去,那么比t小的数里剩下的就只有素数了。

线性筛素数的方法,布布扣,bubuko.com

线性筛素数的方法

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/zn505119020/p/3784106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!