素数求和
类型:函数
描述
输入一个正整数n,统计从[0,n]之间的最大的10个素数之和。本题保证测试用例至少有10个满足条件的素数。
例如:输入31 ,应求得3,5,7,11,13,17,19,23,29,31之和。
本题要求使用自定义函数完成,代码框架参考如下:
def isprime(n): #判断素数函数
......
def f(n): #找小于n的素数并求和
......
......
p=int(input())
print(f(p))
示例 1
输入:31
输出:158
标准答案
def isprime(n):
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
else:
return True
def f(n):
sumPrime,count=0,0
for i in range(n,1,-1):
if isprime(i):
sumPrime = sumPrime + i
count = count + 1
if count == 10:
return sumPrime
num = int(input())
print(f(num))
我的答案
def isprime(n):
if n<2:
return False # 0、1、负数以及偶数都不是素数
for i in range(2,int(n**0.5)+1):
if n%i == 0: # 能被2到其根号n之间的整数整除的数不是素数
return False
else:
return True # for循环正常结束,未遇到return的数是素数
def f(n):
s = 0
count = 10
for i in range(n,1,-1):
if isprime(i):
s += i
count -= 1
if count<=0:
break
return s
if __name__ == '__main__':
num = int(input())
print(f(num))