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