792. 第K个质数
给出质数
n
,输出它是第几个质数。
样例
样例1
输入: n = 3
输出: 2
解释:
[2,3,5],3是第2个质数。
样例2
输入: n = 11
输出: 5
解释:
[2,3,5,7,11],11是第五个质数。
注意事项
-
n <= 100000 。
-
质数定义为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数。
public class Solution {
/**
* @param n: the number
* @return: the rank of the number
*/
public int kthPrime(int n) {
// write your code here
int ret = 0;
for (int i = 2; i <=n ; i++) {
if (isPrime_3(i)){
ret++;
}
}
return ret;
}
boolean isPrime_3( int num )
{
//两个较小数另外处理
if(num ==2|| num==3 )
return true ;
//不在6的倍数两侧的一定不是质数
if(num %6!= 1&&num %6!= 5)
return false ;
int tmp = (int) Math.sqrt( num);
//在6的倍数两侧的也可能不是质数
for(int i= 5;i <=tmp; i+=6 )
if(num %i== 0||num %(i+ 2)==0 )
return false ;
//排除所有,剩余的是质数
return true ;
}
}