求第k个素数,题中给出k的范围了,所以先打个表,都求出来,给出具体的k时直接输出就可以了
代码:
package Test1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Test26_1040 {
/**
* by qr jobdu 1040 2014-8-15
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int prime[]=new int[10001];
int index=0; //指向插入的最后一个素数的位置
int num=2;
while(index!=10000){
if(isprime(num))
prime[++index]=num;
num++;
}
StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
int k;
while((st.nextToken())!=StreamTokenizer.TT_EOF){
k=(int)st.nval;
System.out.println(prime[k]);
}
}
private static boolean isprime(int num) {
int sqrtn=(int) Math.sqrt(num);
for(int i=2;i<=sqrtn;i++){
if(num%i==0)
return false;
}
return true;
}
}
感觉自己有的时候会把题想得难和复杂,还有点不会变通。。。。还是得多练习呀!