欢迎访问宙启技术站
智能推送

Python函数:判断输入的数字是否为质数

发布时间:2023-06-23 02:37:37

判断一个数字是否为质数是一个基本的数学计算问题。在Python编程中,我们可以使用函数来实现这个任务。下面,我们将介绍如何编写Python函数来判断一个数字是否为质数,以及如何调用这个函数。

首先,我们需要了解什么是质数。一个大于1的自然数,如果除了1和它本身,没有其他的自然数能够整除它,则这个数就是质数。例如,2、3、5、7、11、13等就是质数,而4、6、8等就不是质数。

接下来,我们可以根据定义来编写Python函数。代码如下:

def is_prime(num):
    if num <= 1:
        return False
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return False
    return True

该函数接受一个参数num,表示待判断的数字。函数首先判断num是否小于等于1,如果是,则返回False,因为1以下的数字都不是质数。接着,我们使用一个for循环,遍历从2到根号num之间的所有数字,判断它们是否能够被num整除。如果存在一个数字能够被num整除,则说明num不是质数,返回False。最后,如果for循环结束后仍然没有发现被num整除的数字,则说明num是质数,返回True

下面是该函数的测试代码:

num = int(input("请输入一个数字:"))
if is_prime(num):
    print(num, "是质数")
else:
    print(num, "不是质数")

我们先从用户处输入一个数字,然后调用is_prime函数进行判断。如果该函数返回True,则输出该数字是质数;否则,输出该数字不是质数。

注意,我们在计算根号num的整数部分时,使用了int(num**0.5)+1,而不是int(num**0.5)。这是因为range函数的结束位置是不包括在内的,如果使用int(num**0.5)作为结束位置,那么可能会漏掉一个平方根的整数部分。

除了上述方法以外,还可以将循环次数进一步优化。具体方法是,若num不是质数,则必有一个因子在[2,num^0.5]范围内,也就是说至多只需遍历到num^0.5即可。此时的时间复杂度从$O(n)$降到了$O(\sqrt{n})$,进一步提高了效率。最终代码如下:

def is_prime(num):
    if num <= 1:
        return False
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return False
    return True

上述代码可以判断一个数字是否为质数,可以在Python编程中进行使用。