通过计算零余数来检查数字是否为质数

时间:2019-06-17 16:38:36

标签: python primes

我正在尝试编写一个程序来检查数字是否是质数。

我已经知道的方式:检查是否有任何数字(排除数字本身和1)是否提示为零。

我要尝试的方式:检查是否有两个以上的数字(包括 1和数字本身)提示为零:

n=10
for a in range(1,n+1):
   x=n%a
   if (x == 0):
   print x

我得到的提示数为零,其中提到了代码。我想以这样的方式定义逻辑:如果输出中零的数目大于2,则该数目不是素数,否则该数目是素数。 (期望输入的数字大于1。)

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)