首页 > 编程知识 正文

prime python:如何使用Python进行质数判断

时间:2023-11-22 12:43:06 阅读:287846 作者:GXEA

本文将介绍如何使用Python编写一个判断质数的程序,并且给出使用Python的质数库进行质数判断的例子代码。

一、什么是质数

质数是指除了1和它本身以外,不能被其他正整数整除的数。例如2、3、5、7等都是质数,而4、6、8、9等不是质数。

判断质数是一个数学问题,但其中的算法可以通过编程来实现。下面介绍两种Python算法判断质数的方法。

二、使用较简单的算法进行质数判断

判断质数的最直接的算法是通过试除法,也就是对待判断的数n,让n分别除以2到n-1之间的每个数,如果都不能被整除,则n是质数。

而在Python代码中,可以用到for循环、if语句等来实现试除法。

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

上面的代码中,我们首先判断输入的n是否小于等于1,因为小于等于1的数不是质数。之后用for循环对2到n-1之间的每个数进行试除,如果找到一个能整除n的数,那么n不是质数。如果没有找到这样的数,那么n是质数。

三、使用Python的质数库进行质数判断

Python中提供了math库和NumPy库来判断质数,NumPy库算法更加高效。

import numpy as np

def is_prime(n):
    if n <= 1:
        return False
    else:
        return np.all(n % np.arange(2, int(np.sqrt(n)) + 1) != 0)

在上面的代码中,我们首先判断输入的n是否小于等于1,如果n小于等于1,则一定不是质数。之后我们使用了numpy库中的all()函数来逐一对2到sqrt(n)的范围内的每个数进行判断。其中,np.arange(2, int(np.sqrt(n)) + 1)表示生成一个从2到n开根号的整数序列,使用np.all()函数来进行数组内所有元素的判断,如果都不被n整除,则返回True,表示n是质数。

四、Python质数判断函数的使用和运行结果

下面是使用上述两种质数判断函数的Python程序。我们可以输入一个待判断的正整数n,程序会返回这个数是否是质数的结果。

import time 
from math import sqrt

def is_prime_simple(n):
    if n <= 1:
        return False
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True

def is_prime_numpy(n):
    if n <= 1:
        return False
    else:
        return np.all(n % np.arange(2, int(np.sqrt(n)) + 1) != 0)

while True:
    n = input("请输入一个正整数 (输入Q退出):")
    if n.upper() == "Q":
        print("Bye bye!")
        break
    n = int(n)
    start = time.time()
    isprime1 = is_prime_simple(n)
    end1 = time.time()
    isprime2 = is_prime_numpy(n)
    end2 = time.time()
    print("采用Python的for循环的算法判断:", n, isprime1, "共用时:", end1 - start, "秒")
    print("采用Python的numpy库的算法判断:", n, isprime2, "共用时:", end2 - end1, "秒")

运行结果如下:

请输入一个正整数 (输入Q退出):5
采用Python的for循环的算法判断: 5 True 共用时: 0.00013875961303710938 秒
采用Python的numpy库的算法判断: 5 True 共用时: 0.00022912025451660156 秒
请输入一个正整数 (输入Q退出):91
采用Python的for循环的算法判断: 91 False 共用时: 0.00011396408081054688 秒
采用Python的numpy库的算法判断: 91 False 共用时: 0.00011301040649414062 秒
请输入一个正整数 (输入Q退出):977
采用Python的for循环的算法判断: 977 True 共用时: 0.003331422805786133 秒
采用Python的numpy库的算法判断: 977 True 共用时: 0.00011849403381347656 秒
请输入一个正整数 (输入Q退出):Q
Bye bye!

可以看到,通过Python的for循环的算法和numpy库的算法都能够正确地判断出质数,但使用numpy库的算法更加高效。代码中的while循环可以连续输入多个数字进行测试,通过计时可以得到不同算法的效率。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。