Quantcast
Channel: C++博客-所有随笔
Viewing all articles
Browse latest Browse all 7881

素数筛法

$
0
0

求第100002个素数。(2是第一个素数)

 

结题思路:素数筛法

代码如下:

import java.util.Arrays;


public class Copy_2_of_Main {
    
    
static int N = 10000000;
    
static int count;
    
static int rs[] = new int[N];
    
static boolean tg[] = new boolean[N];//is prime
    
    
public static void main(String[] args) {
        
        Arrays.fill(tg, 
true);
        
int ed = (int)Math.sqrt(N) + 1;
        
for(int i = 2; i <= ed; i++){//素数筛法
            if(tg[i]){
                
for(int j = i * 2; j < N; j += i){// j += i
                    tg[j] = false;
                }

            }

        }

        count 
= 0;
        
for(int i = 2; i < N; i++){
            
if(tg[i] == true){
                rs[count
++= i;
            }

        }

        System.out.println(
"count=" + count);
        System.out.println(
"result=" + rs[100001]);
//        for(int i = 0; i < count; i++)
//            System.out.println(rs[i]);
    }

        
}




小鼠标 2013-07-06 19:38 发表评论

Viewing all articles
Browse latest Browse all 7881

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>