藍橋杯真題——第n個素數

n個素數

    素數就是不能再進行等分的整數。比如:711。而9不是素數,因爲它可以平分爲3等份。一般認爲最小的素數是2,接着是35... 

    請問,第100002(十萬零二)個素數是多少?

請注意:是第一素數,是第二個素數,依此類推。

public class Main

{

public static void main(String[] args)

{

int N = 1000 * 1000 * 10;

int x = 100002;

byte[] a = new byte[N];

for(int i=2; i<N/2; i++)  

{

if(a[i]==1) continue;  //和數沒有資格參加篩法

for(int k=2; k<=N/i; k++)

{

if(i*k<N)

a[i*k] = 1;   //將和數用1標記

}

}

int sum = 0;   //用來計算第幾個素數

for(int i=2; i<N; i++)   //i表示素數

{

if(a[i]==0)

{

sum++;

if(sum==x)  //如果sum=100002

System.out.print(sum+" "+i); 

}

}

}

}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章