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

 

posted @ 2020-03-23 12:32  风不再来  阅读(393)  评论(0编辑  收藏  举报