數(shù))
/** * 題目名稱第n小的質(zhì)數(shù) p * 題目來源http://noi.openjudge.cn/ch0105/44/ p * 程序功能輸出指定編號的質(zhì)數(shù) * * author 潘磊just_panleijust.edu.cn * version 1.0 */importjava.util.Scanner;publicclassMain{/** * 判斷指定正整數(shù)是否為質(zhì)數(shù)。 * * param num 指定正整數(shù)。 * return true當且僅當num是質(zhì)數(shù)否則false。 */publicbooleanisPrime(intnum){if(num2){// 小于2的整數(shù)不是質(zhì)數(shù)returnfalse;}if(num2){// 2是質(zhì)數(shù)returntrue;}if(num%20){// 除2以外其它偶數(shù)都不是質(zhì)數(shù)returnfalse;}/* 從3依次遍歷到sqrt(num)僅遍歷奇數(shù) */for(inti3;i*inum;i2){if(num%i0){// 如果當前整數(shù)是num的因子returnfalse;// 說明num不是質(zhì)數(shù)}}returntrue;// 以上沒有返回false說明num是質(zhì)數(shù)}/** * 返回指定編號的質(zhì)數(shù)。 * * param n 指定編號。 * return 第n個質(zhì)數(shù)。 */publicinttheNthPrime(intn){if(n1){// 第一個質(zhì)數(shù)是2return2;}n--;// 去掉質(zhì)數(shù)2查找的質(zhì)數(shù)數(shù)量減1intans-1;// 第n個質(zhì)數(shù)初始為-1這里初始值可以是任意整數(shù)/* 從3開始依次遍歷每個奇數(shù)直至找到第n個質(zhì)數(shù) */for(inti3;n0;i2){if(isPrime(i)){// 如果當前整數(shù)是質(zhì)數(shù)ansi;// 更新ans為當前整數(shù)n--;// 令查找的質(zhì)數(shù)數(shù)量減1}}returnans;}publicstaticvoidmain(String[]args){MaincallnewMain();ScannerinputnewScanner(System.in);intninput.nextInt();System.out.print(call.theNthPrime(n));}}