输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的正整数,)到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。
时间: 2023-04-30 19:05:01 浏览: 132
质数(素数)计算
题目描述:输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的数),到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。
解题思路:首先,定义一个判断是否为质数的函数is_prime(n),然后从2开始循环,判断每个数是否为质数,是则计数器cnt加1,直到cnt等于p停止循环,此时可以得到第p个质数,接下来从第p+1个质数开始循环10个质数(计数器为10),求和。
代码实现:
def is_prime(n): # 判断是否为质数函数
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
p = int(input("请输入一个大于20的正整数p:"))
cnt = 0 # 计数器
for num in range(2, 1000000):
if is_prime(num):
cnt += 1
if cnt == p: # 得到第p个质数
prime_p = num
break
sum_p = 0 # 求和
cnt = 0
for num in range(prime_p+1, 1000000):
if is_prime(num):
cnt += 1
if cnt <= 10:
sum_p += num
else:
break
print("正整数范围内第{}个质数为{},到第{}个质数之和为{}".format(p, prime_p, p+10, sum_p))
阅读全文