科大訊飛筆試題

現有q組數,針對每一組,第K個素數是多少?

輸入:第一行一個q,表示數組大小;接下來q行表示第k個素數;

輸出:q行表示第k個素數的值



java實現

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone{
	int findmax(int A[]){
		int max=A[0];
	  for(int i=0;i<A.length;i++)
    {
    if(A[i]>max) max=A[i];
    }
    return max;
	}
	
    boolean IsPrime(int num)   num爲我們要判斷的數  
    {
        for (int i = 2; i <= Math.sqrt(num); i++)    
        {
            if (num%i == 0)
            {
            	System.out.println("不是素數"+num);
                return false;
            }
        }
        //System.out.println("是素數"+num);
        return true;
    }
    public static void main(String args[])
    {

        Ideone m = new  Ideone();
        int a[] = new int[100];
		int prime[] = new int[1000];
        
        Scanner sc = new Scanner(System.in);
		int q;
        q=sc.nextInt();
        for (int i = 0; i<q; i++)
            a[i]=sc.nextInt();
        int num = 0;
        int c = 2;
        System.out.println(m.findmax(a));//數組中最大的k
        while (num < q+m.findmax(a)) {//只循環到最大的k值,這樣就不用擔心次數過多或者不夠
            if (m.IsPrime(c)) {
                prime[++num] = c;
            }
            ++c;
        }
        for (int j = 0; j<q; j++)
		System.out.println( prime[a[j]] );
    }
}

結果

輸入

2

1

3

輸出

3
是素數2
是素數3
不是素數4
是素數5
不是素數6
是素數7
不是素數8
不是素數9
不是素數10
是素數11
2
5
想得到標準輸出把print的幾行註釋即可


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