我正在尝试编写一个程序来检查数字是否是质数。
我已经知道的方式:检查是否有任何数字(排除数字本身和1)是否提示为零。
我要尝试的方式:检查是否有两个以上的数字(包括 1和数字本身)提示为零:
n=10
for a in range(1,n+1):
x=n%a
if (x == 0):
print x
我得到的提示数为零,其中提到了代码。我想以这样的方式定义逻辑:如果输出中零的数目大于2,则该数目不是素数,否则该数目是素数。 (期望输入的数字大于1。)
答案 0 :(得分:1)
我认为人们很困惑,要避免这种情况,因为这不是检查素数的有效方法。通常,我们希望尽快且轻松地取消数字资格,避免进行任何额外的除法。
但是,如果您要使用它,请执行以下操作:
def is_prime(n):
'''
I want to define the logic in such that if the number
of zeros is greater than 2 in the output, then the number
is not prime, else the number is prime
'''
return sum(n % divisor == 0 for divisor in range(1, n + 1)) <= 2
# Expecting that the input number is greater than 1
for n in range(2, 100):
if is_prime(n):
print(n)