用于检查素数的 Python 程序

要理解这个例子,你应该具备以下 Python 编程 主题的知识


一个大于1的正整数,除了1和它本身以外没有其他因数,这个数就被称为素数(质数)。例如,2、3、5、7等都是素数,因为它们没有其他因数。但6不是素数(它是合数),因为 2 x 3 = 6


示例1:使用标志变量

# Program to check if a number is prime or not

num = 29

# To take input from the user
#num = int(input("Enter a number: "))

# define a flag variable
flag = False

if num == 0 or num == 1:
    print(num, "is not a prime number")
elif num > 1:
    # check for factors
    for i in range(2, num):
        if (num % i) == 0:
            # if factor is found, set flag to True
            flag = True
            # break out of loop
            break

    # check if flag is True
    if flag:
        print(num, "is not a prime number")
    else:
        print(num, "is a prime number")

输出

29 is a prime number

在这个程序中,我们检查了 num 是否为素数。小于或等于1的数不是素数。因此,我们仅在 num 大于1时继续处理。

我们检查 num 是否能被从 2num - 1 范围内的任何数整除。如果我们在该范围内找到一个因数,那么这个数就不是素数,于是我们将 flag 设置为 True 并跳出循环。

在循环之外,我们检查 flagTrue 还是 False

  • 如果它是 Truenum 就不是一个素数。
  • 如果它是 Falsenum 就是一个素数。

注意:我们可以通过减小寻找因数的数值范围来改进我们的程序。

在上面的程序中,我们的搜索范围是从2到 num - 1

我们可以使用 range(2,num//2)range(2,math.floor(math.sqrt(num)+1))。后一个范围基于这样一个事实:一个合数必定有一个小于或等于其平方根的因数。否则,这个数就是素数。

您可以更改上述源代码中变量 num 的值,以检查其他整数是否为素数。

在 Python 中,我们也可以使用 for...else 语句来完成这个任务,而无需使用额外的 flag 变量。


示例2:使用 for...else 语句

num = 407

# To take input from the user
#num = int(input("Enter a number: "))

if num == 0 or num == 1:
    print(num, "is not a prime number")
elif num > 1:
   # check for factors
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")
       
# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")

输出

407 is not a prime number
11 times 37 is 407

这里,我们使用了 for..else 语句来检查 num 是否为素数。

它的工作原理是,for 循环的 else 子句仅在没有从 for 循环中 break 的情况下运行。这个条件只有在没有找到任何因数时才会满足,这意味着给定的数是素数。

因此,在 else 子句中,我们打印出该数是素数。


另请阅读

在我们结束之前,让我们来检验一下你对这个例子的理解!你能解决下面的挑战吗?

挑战

编写一个函数来检查一个数是否为素数。

  • 例如,对于输入 7,输出应为 True
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战