792. 第K个质数
792. 第K个质数
中文English
给出质数n
,输出它是第几个质数。
样例
样例1
输入: n = 3
输出: 2
解释:
[2,3,5],3是第2个质数。
样例2
输入: n = 11
输出: 5
解释:
[2,3,5,7,11],11是第五个质数。
注意事项
n <= 100000
。- 质数定义为在大于
1
的自然数中,除了1
和它本身以外不再有其他因数。
class Solution: """ @param n: the number @return: the rank of the number """ """ 大致思路: 1.首先给定初始值,如果是prime已经被赋值的话,就不需要再赋值了。已经被赋值说明的是已经判断当前该数不是质数,可以被整除 2.按照参数来循环到指定的位置n来赋值不是质数的(赋值1,标记不是质数即可)。 3.在依次循环,如果是0则说明没有被赋值,说明是质数。计数即可 """ def kthPrime(self, n): ##初始化,全部为0 prime = [0]*100000 for i in range(2,n): ##如果是0说明还没有被赋值(其实加这个判断,可以少一些赋值,避免重复赋值) if prime[i] == 0: ##如果不是质数的话,可以被2,3,4,5...等整除的,那么被赋值1(相反是从2,3,4,5...相乘得到的数值) for j in range(2*i,n,i): prime[j] = 1 ##然后判断是第多少个,为1的说明不是质数,为0的说明才是质数(从2开始判断) count = 1 for j in range(2,n): if prime[j] == 0: count += 1 return count