51Nod-1181-质数中的质数(质数筛法)

来源:互联网 发布:工业企业数据库 编辑:程序博客网 时间:2024/05/20 16:45

51Nod-1181-质数中的质数(质数筛法)

                1181 质数中的质数(质数筛法)如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N <= 10^6)Output输出>=N的最小的质数中的质数。Input示例20Output示例

解题方法

筛选出质数,然后存入一个列表中,接着再判断遍历的某个质数的索引是否也在列表中。这便是解题的思路。
python中的in可以检查某个数是否在列表中。


解题代码

#筛选质数函数def Prime(n):    isprime = [True]*n    prime = []    #为True则是质数    for i in range(2, n):        if isprime[i]:            prime.append(i)        for k in prime:            if i*k >= n:                break            isprime[i*k] = False    return primemaxn = 10**6prime = Prime(maxn)lp = len(prime)while True:    try:        N = int(input())        for i in range(lp):            #遍历质数列表,小于N的数就不用管            if prime[i] < N:                continue            else:                #序号i,判断i+1(因为列表中的序号从0开始)是否在质数列表中                if i+1 in prime:                    print(prime[i])                    break    except EOFError:        break
原创粉丝点击