python利用函数求素数方法详解

下面是Python求素数的完整攻略。

什么是素数?

素数,又称质数,指在大于1的自然数中,除了1和该数本身,无法被其他自然数整除的数。

方法一:暴力枚举

求素数最直接的方法是暴力枚举,即对于每个数,判断它是不是素数。具体的方法是对于一个待判断的数n,从2开始枚举到n-1,依次判断n能否被整除。

示例代码如下:

def is_prime(n):
    # 如果n小于2,直接返回False
    if n < 2:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

该函数接受一个参数n,返回值为True或False,表示n是否是素数。首先判断n是否小于2,是的话返回False,因为按照定义,小于2的数都不是素数。然后从2开始枚举到n-1,如果n能够被任何一个数整除,就返回False,否则返回True。

我们可以用这个函数来列出100以内的素数:

for i in range(100):
    if is_prime(i):
        print(i)

输出:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

这种方法的缺点是时间复杂度较高,因为要枚举从2到n-1的所有数。例如,对于100以内的数,该方法需要判断的数有:

2, 3, 4, 5, ..., 99, 共98个数

当n很大时,判断的数就会变得非常多,效率很低。

方法二:试除法

试除法是一种更高效的求素数方法。它的基本思想是,对于一个待判断的数n,只需要用从2到sqrt(n)的所有素数依次试除即可,如果都不能整除,则n也是素数。

为什么只需要试除从2到sqrt(n)的素数呢?假设n不是素数,则它可以表示为m1*m2的形式,其中m1和m2都在2到n-1之间。如果m1和m2都大于sqrt(n),则有:

m1 * m2 > sqrt(n) * sqrt(n) = n

这与m1 * m2 = n矛盾,因此至少有一个因子小于等于sqrt(n)。

示例代码如下:

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

该函数与上面的函数类似,主要的区别在于枚举的范围改为了2到sqrt(n),并且sqrt(n)用n**0.5的形式计算。

我们可以用这个函数来列出100以内的素数:

for i in range(100):
    if is_prime_v2(i):
        print(i)

输出:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

注意,虽然这个方法比暴力枚举要快,但是当n非常大时,仍然需要计算很多次,速度仍然较慢,因此还有更高效的方法可以使用。

以上就是Python求素数的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python利用函数求素数方法详解 - Python技术站

(0)
上一篇 2023年4月15日
下一篇 2023年4月15日

相关文章

  • python3的串口读写函数

    下面是对 Python3 串口读写函数的详细讲解: 库介绍 串口通信可以通过使用 PySerial 库轻松实现,该库为 Python3 提供良好的串口操作支持。该库的使用方法也比较简单,只需导入该库,并使用其中定义的串口对象来进行操作即可。 import serial 串口初始化 在使用串口通信之前,需要对串口进行初始化操作,包括指定串口号、波特率、数据位、…

    python 2023年4月15日
    00
  • python函数参数为list

    Python函数参数为list的完整攻略 在Python中,函数的参数可以是list,这是非常方便的,因为我们可以将一个list传递给函数,然后在函数中进行操作。下面详细讲解python函数参数为list的完整攻略。 定义一个接受list参数的函数 在定义函数时,如果希望函数接受一个list作为参数,那么可以在函数的参数列表中使用“*”符号,如下所示: de…

    python 2023年4月15日
    00
  • python中uint8函数

    Python中uint8函数详解 在Python中,uint8函数是一个在数值计算时常常使用的函数,它可以将一个数值转化成无符号8位整数编码,供计算机处理。这篇文章就会详细讲述uint8函数的用法。 基本用法 在Python中,使用numpy库可以轻松地实现uint8函数的使用。 比如,我们可以使用以下代码创建一个numpy数组并将其转化为uint8类型: …

    python 2023年4月15日
    00
  • python中实现∑求总和的函数

    要实现求总和的函数,我们可以使用Python中的for循环语句和内置函数sum()。以下是实现求总和函数的完整攻略及两个代码示例: 函数原型 下面是一个通用的求总和函数,它使用for循环语句遍历列表中的所有元素,并使用sum()内置函数将它们相加,最后返回总和。 def sum_list(numbers): """ 求列表中所有…

    python 2023年4月15日
    00
  • 怎么用python画sin函数图像

    当需要用Python绘制一个函数图像时,通常可以使用Matplotlib这个Python数据可视化库。在本攻略中,我们将讲解使用Matplotlib如何绘制Sin函数的图像。 1. 安装Matplotlib库 在开始绘制图像之前,我们需要先安装Matplotlib库。打开终端或命令行界面,输入以下命令: pip install matplotlib 2. 引…

    python 2023年4月15日
    00
  • 如何查看python内置函数

    要查看Python内置函数的完整攻略,有两种途径,分别是: 查看官方文档 Python官方文档提供了完整的内置函数文档,其中包含了内置函数的详细说明、参数列表、返回值等信息,是查看内置函数攻略的首选途径。 具体步骤如下: 打开Python官方文档网站:https://docs.python.org/3/library/functions.html 在网页中搜…

    python 2023年4月15日
    00
  • python execute函数功能详解

    Python中的execute()函数是一个内置函数,它可以在指定的命名空间(Namespace)中执行指定的代码字符串(Code String)。该函数的完整签名如下: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 该函数具有以下几个参数: source …

    python 2023年4月15日
    00
  • python导入模块中的函数

    Python中,通过import语句导入模块后,可以访问该模块中的函数、类、变量等各种元素。下面是Python导入模块中的函数的完整攻略。 第一步:导入模块 在Python中,我们首先需要使用import语句来导入模块。例如,假设我们要导入名为“example”的模块,可以使用以下代码: import example 第二步:使用模块中的函数 在导入模块后,…

    python 2023年4月15日
    00
合作推广
合作推广
分享本页
返回顶部