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

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

                1181 质数中的质数(质数筛法)

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

Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例

解题方法

筛选出质数,然后存入一个列表中,接着再判断遍历的某个质数的索引是否也在列表中。这便是解题的思路。
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 prime

maxn = 10**6
prime = 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值