这段代码为什么输出的是这样子?

代码

#使用函数求素数和
'''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))