代码
#使用函数求素数和
'''prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False.
PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。
保证用户传入的参数1<=m<n。'''
def prime(p):
for i in range(1,int(p/2+1)):
if p%i==0:
return False
elif p%i!=0:
return True
p=int(input('请传入参数p'))
print(prime(p))
输出
请传入参数p11
False
进程已结束,退出代码0
你这个代码 除数i从1开始循环,任何整数都能被1整除啊,直接返回False了,改成range(2, int(p/2 + 1))
另外你这段代码还有其他问题, for循环永远只循环一次,是判断不了质数的,应该把return True提到循环体外面来
def prime(p):
if p <= 1:
return "%d是非素数" % p
else:
for num in range(2, int(math.sqrt(p)) + 1):
if p % num == 0:
return False
else:
return True
p = int(input('请传入参数p:'))
print(prime(p))