素数指的是只能被1和自身整除的大于1的整数
对于每个数num,并不需要从2判断到num-1,这样效率很低。
假若一个数可以进行因式分解,那么分解得到的两个数必将有一个小于等于sqrt(num),另一个大于等于sqrt(num).
所以,我们只要遍历sqrt(num)即可,因为在sqrt(num)左侧找不到约数,那么右侧必然也找不到约数。
from math import sqrt
num=int(input("请输入一个正整数:"))
end=int(sqrt(num))
is_prime=True
for x in range(2,end+1):
if num % x ==0 :
is_prime=False
break
if is_prime and num!=1:
print('%d是素数' % num)
else:
print('%d不是素数' % num)