Python程序中查找素数的不同方法


在本教程中,我们将探讨查找给定数字是否有效不同的方法。让我们开始吧。

方法一

这是一个查找素数的通用方法。

  • 如果数字小于或等于1,则返回False。

  • 如果数字可以被任何数字整除,则函数将返回False。

  • 循环结束后,返回True。

示例

 在线演示

# checking for prime
def is_prime(n):
   if n <= 1:
      return False
   else:
      for i in range(2, n):
         # checking for factor
         if n % i == 0:
            # return False
            return False
      # returning True
   return True
print(f"Is 2 prime: {is_prime(2)}")
print(f"Is 4 prime: {is_prime(4)}")
print(f"Is 7 prime: {is_prime(7)}")

输出

如果您运行以上代码,则将获得以下结果。

Is 2 prime: True
Is 4 prime: False
Is 7 prime: True

方法二

在这种方法中,我们将通过将迭代次数减少到n的平方根来减少迭代次数。让我们看看代码。

示例

 在线演示

import math
# checking for prime
def is_prime(n):
   if n <= 1:
      return False
   else:
      # iterating loop till square root of n
      for i in range(2, int(math.sqrt(n)) + 1):
         # checking for factor
         if n % i == 0:
            # return False
            return False
      # returning True
      return True
print(f"Is 2 prime: {is_prime(2)}")
print(f"Is 4 prime: {is_prime(4)}")
print(f"Is 7 prime: {is_prime(7)}")

输出

如果您运行以上代码,则将获得以下结果。

Is 2 prime: True
Is 4 prime: False
Is 7 prime: True

方法三

在先前的方法中,我们检查了偶数。我们都知道,除了2之外,偶数不可能是素数。因此,在这种方法中,我们将删除所有偶数以减少时间。

示例

 在线演示

import math
# checking for prime
def is_prime(n):
   # checking for less than 1
   if n <= 1:
      return False
   # checking for 2
   elif n == 2:
      return True
   elif n > 2 and n % 2 == 0:
      return False
   else:
      # iterating loop till square root of n
      for i in range(3, int(math.sqrt(n)) + 1, 2):
         # checking for factor
         if n % i == 0:
            # return False
            return False
      # returning True
      return True
print(f"Is 2 prime: {is_prime(2)}")
print(f"Is 4 prime: {is_prime(4)}")
print(f"Is 7 prime: {is_prime(7)}")

输出

如果您运行以上代码,则将获得以下结果。

Is 2 prime: True
Is 4 prime: False
Is 7 prime: True

结论

如果您对本教程有任何疑问,请在评论部分提出。

更新于:2020年4月24日

1K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告