精华内容
下载资源
问答
  • 使用列表实现筛选法求素数 编写程序,输入一个大于2 的自然数,然后输出小于该数字的所有素数组成的列表。 输入格式: 一个大于2的自然数。 输出格式: 小于该数字的所有素数组成的列表。 def Prime(n): for i in ...

    使用列表实现筛选法求素数

    编写程序,输入一个大于2 的自然数,然后输出小于该数字的所有素数组成的列表。
    输入格式:

    一个大于2的自然数。
    输出格式:

    小于该数字的所有素数组成的列表。

    def Prime(n):
        for i in range(2,n):
            if n%i==0:
                return False
        return True
    n=int(input())
    result=list()
    for i in range(2,n):
        if Prime(i)==True:
            result.append(i)
    print(result)
    
    展开全文
  • Jupyter 使用列表实现筛选法求素数 使用列表实现筛选法求素数可以极大的提高计算机的运算速率。 maxNumber = int(input("请输入一个大于2的自然数:")) lst = list(range(2,maxNumber)) #最大整数的平方根 m = int...
  • python语言对于计算机专业的学生,不管是计算机软件还是物联网,都是很重要的一种编程语言,python未来在人工智能方向上是会有很大的贡献程度...python学习—–使用列表实现筛选法求素数目录一、列表实现筛选法求素数的
  • 代码如下: (具体内置函数可以自行搜索,我主要记录这样求素数的原理即好处,帮助大家和自己体验一下这种高级的感觉【来自小白的乐趣】)1 maxNumber = int(input("请输入一个大于2的自然数"))2 lst = list(range(2...

    代码如下: (具体内置函数可以自行搜索,我主要记录这样求素数的原理即好处,帮助大家和自己体验一下这种高级的感觉【来自小白的乐趣】)

    1 maxNumber = int(input("请输入一个大于2的自然数"))2 lst = list(range(2, maxNumber))3 print(lst)4 #最大整数的平方根

    5 m = int(maxNumber ** 0.5)6 for index, value inenumerate(lst):7

    8 #如果当前数字已大于最大整数的平方根,结束判断(素数判断方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。)

    9 if value >m:10 break

    11 #对该位置之后的元素进行过滤,每次除以value,若余数为0,则淘汰它

    12 lst[index + 1:] = filter(lambda x: x % value != 0, lst[index + 1:])13 print("lst:",lst)14 print(lst)

    原理:

    前提须知:

    素数判断方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

    举例 使用36来跑跑上面的代码

    lst = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]

    m = 6

    进入循环

    ① index = 0 value = 2(对应lst中的第一个元素)

    从lst[1]开始进行过滤 找出lst里不能被2整除的数

    lst = [2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35]

    ② index =1 value = 3(对应lst中的第二个元素)

    从lst[2]开始进行过滤 找出lst里不能被3整除的数

    lst = [2, 3, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35]

    ③ index = 2 value = 5 (对应lst中的第三个元素)

    从lst[3]开始进行过滤 找出lst里不能被5整除的数

    lst = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

    ④ index = 3 value = 7

    此时已经大于6(36的平方根),所以结束判断

    相比从2到所求数的平方根进行遍历,通过是否能被整除来求素数,这个的循环次数更少,譬如从上述②到③,就已经省去了对是否能整除4的判断,若我们所求的数越大,那这个体现的效率就越高(因为能减少更多的运算次数),为什么可以这样呢?如果一个数不能被2整除,那它肯定不能被4整除(即不能被n整除的数,肯定不能被n的倍数整除),因此就可用这规律减少运算次数

    展开全文
  • python语言对于计算机专业的学生,...本次博客,林君学长主要带大家了解python中筛选法求解素数的原理、列表切片操作、内置函数 enumerate()、filer()的使用、序列解包工作原理以及选择结构和循环结构,以例题编写...

    python语言对于计算机专业的学生,不管是计算机软件还是物联网,都是很重要的一种编程语言,python未来在人工智能方向上是会有很大的贡献程度的,不仅体现在语言灵活多变,还能处理很多文件、图片、图像、等数据。
    本次博客,林君学长主要带大家了解python中以下的方面

    一、列表实现筛选法求素数的原理

    1、基本原理

    首先列出指定范围内所有候选数字,然后从前往后依次选择一个数字去除以后面所有数字,能够被整除的肯定不是素数,把这些数字过滤掉,然后重复这个过程,直到选择的除数大于最大数字的平方根为止。代码主要演示内置函数filter()和切片的用法,实际上这个算法的效率并不是很高。

    2、除此之外,林君学长这里还给大家介绍求素数的三个定理的基本原理

    1)、普通筛选(常用于求解单个素数问题)
    自然数中,除了1和它本身以外不再有其他因数。

    import math
    def func_get_prime(n):
        func = lambda x: not [x%i for i in range(2, int(math.sqrt(x)) + 1) if x%i ==0]
        return filter(func, range(2,n+1))
    print(list(func_get_prime(50)))
    

    运行结果:
    在这里插入图片描述
    2)、Wilson定理(常用与数比较小的情况)
    对于一个任意整数n>1,当且仅当n是一个素数时,(n-1)!+1能够被n整除

    import math
    def prime_of_Wilson(n):
        func = lambda x: True if (math.factorial(x-1)+ 1) % x == 0  else False
        return list(filter(func, range(2,51)))
    print(prime_of_Wilson(50))
    

    运行结果:
    在这里插入图片描述

    3)、 埃拉托色尼筛算法(优化了求解范围素数问题)
    埃拉托色尼算法工作原理:

    • 假定范围内的所有的数都是素数
    • 我们从2开始,只要是2的倍数我们就认为该数不是素数,打标处理
    • 直到判断到n为止我们就可以将所有的非素数打上标记,从而确定了所有的非素数
    import math
    def prime_of_eratosthenes(n):
        primes= [True]*n
        for p in range(2, math.ceil(math.sqrt(n))):
            if primes[p]:
                for i in range(p * 2, n, p):
                    primes[i] = False
        primes = [index + 2 for index, element in enumerate(primes[2:]) if element]
        return primes
    print(prime_of_eratosthenes(50))
    

    运行结果:
    在这里插入图片描述

    二、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。

    1、搭建python环境

    1)、运行jupyter notebook在线python编程,如下所示:

    windows命令行输入jupyter notebook运行在线编程环境
    在这里插入图片描述
    web网页创建新的python文件,如下所示:
    在这里插入图片描述
    在以下就可以编辑python文件了!推荐使用jupyter notebook在线编程
    在这里插入图片描述

    2、输入大于2的自然数,并将2到这个数之间的数整合为列表

    maxNumber =int(input('请输入一个大于2的自然数:'))
    lst=list(range(2,maxNumber))
    

    3、将输入的数开根号,方便后面的对比

    m=int(maxNumber**0.5)
    

    4、利用for循环进行数字的筛选,筛选出小于输入数的所有素数

    for index,value in enumerate(lst):
        #如果当前数字已大于最大整数的平方根,结束判断
        if value>m:
            break
        #对该位置之后的元素进行过滤
        lst[index+1:]=filter(lambda x: x%value !=0,lst[index+1:])
    

    5、输出素数列表

    print(lst)
    

    6、shift+enter运行结果

    在这里插入图片描述

    三、列表实现筛选法求素数的完整代码

    1、完整代码

    #输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表
    maxNumber =int(input('请输入一个大于2的自然数:'))
    lst=list(range(2,maxNumber))
    #最大整数的平方根
    m=int(maxNumber**0.5)
    for index,value in enumerate(lst):
        #如果当前数字已大于最大整数的平方根,结束判断
        if value>m:
            break
        #对该位置之后的元素进行过滤
        lst[index+1:]=filter(lambda x: x%value !=0,lst[index+1:])
    print(lst)
    

    对于输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表,则是利用输入数字最大整数的平方根进行对比,通过python特定的库filter()、enumerate()的运用来进行筛选,列出所得的素数
    以上就是本次博客的全部内容啦,希望对小伙伴们学习python有所帮助哦!喜欢的小伙伴们记得点赞哦!遇到问题的小伙伴评论区留言哦,林君学长耐心为大家解答,这个学长不太冷
    陈一月的又一天编程岁月^ _ ^

    展开全文
  • python语言对于计算机专业的学生,...本次博客,林君学长主要带大家了解python中以下的方面理解筛选法求解素数的原理理解列表切片操作熟练运用内置函数 enumerate()熟练运用内置函数 filer()理解序列解包工作原理初...

    python语言对于计算机专业的学生,不管是计算机软件还是物联网,都是很重要的一种编程语言,python未来在人工智能方向上是会有很大的贡献程度的,不仅体现在语言灵活多变,还能处理很多文件、图片、图像、等数据。

    本次博客,林君学长主要带大家了解python中以下的方面

    理解筛选法求解素数的原理

    理解列表切片操作

    熟练运用内置函数 enumerate()

    熟练运用内置函数 filer()

    理解序列解包工作原理

    初步了解选择结构和循环结构

    例题: 编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表

    python学习-----使用列表实现筛选法求素数目录

    一、列表实现筛选法求素数的原理

    1、基本原理

    2、除此之外,林君学长这里还给大家介绍求素数的==三个定理的基本原理==

    二、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。

    1、搭建python环境

    2、输入大于2的自然数,并将2到这个数之间的数整合为列表

    3、将输入的数开根号,方便后面的对比

    4、利用for循环进行数字的筛选,筛选出小于输入数的所有素数

    5、输出素数列表

    6、==shift+enter==运行结果

    三、列表实现筛选法求素数的==完整代码==

    1、完整代码

    一、列表实现筛选法求素数的原理

    1、基本原理

    首先列出指定范围内所有候选数字,然后从前往后依次选择一个数字去除以后面所有数字,能够被整除的肯定不是素数,把这些数字过滤掉,然后重复这个过程,直到选择的除数大于最大数字的平方根为止。代码主要演示内置函数filter()和切片的用法,实际上这个算法的效率并不是很高。

    2、除此之外,林君学长这里还给大家介绍求素数的三个定理的基本原理

    1)、普通筛选(常用于求解单个素数问题)

    自然数中,除了1和它本身以外不再有其他因数。

    import math

    def func_get_prime(n):

    func = lambda x: not [x%i for i in range(2, int(math.sqrt(x)) + 1) if x%i ==0]

    return filter(func, range(2,n+1))

    print(list(func_get_prime(50)))

    运行结果:

    2)、Wilson定理(常用与数比较小的情况)

    对于一个任意整数n>1,当且仅当n是一个素数时,(n-1)!+1能够被n整除

    import math

    def prime_of_Wilson(n):

    func = lambda x: True if (math.factorial(x-1)+ 1) % x == 0 else False

    return list(filter(func, range(2,51)))

    print(prime_of_Wilson(50))

    运行结果:

    3)、 埃拉托色尼筛算法(优化了求解范围素数问题)

    埃拉托色尼算法工作原理:

    假定范围内的所有的数都是素数

    我们从2开始,只要是2的倍数我们就认为该数不是素数,打标处理

    直到判断到n为止我们就可以将所有的非素数打上标记,从而确定了所有的非素数

    import math

    def prime_of_eratosthenes(n):

    primes= [True]*n

    for p in range(2, math.ceil(math.sqrt(n))):

    if primes[p]:

    for i in range(p * 2, n, p):

    primes[i] = False

    primes = [index + 2 for index, element in enumerate(primes[2:]) if element]

    return primes

    print(prime_of_eratosthenes(50))

    运行结果:

    二、编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。

    1、搭建python环境

    1)、运行jupyter notebook在线python编程,如下所示:

    windows命令行输入jupyter notebook运行在线编程环境

    web网页创建新的python文件,如下所示:

    在以下就可以编辑python文件了!推荐使用jupyter notebook在线编程

    2、输入大于2的自然数,并将2到这个数之间的数整合为列表

    maxNumber =int(input('请输入一个大于2的自然数:'))

    lst=list(range(2,maxNumber))

    3、将输入的数开根号,方便后面的对比

    m=int(maxNumber**0.5)

    4、利用for循环进行数字的筛选,筛选出小于输入数的所有素数

    for index,value in enumerate(lst):

    #如果当前数字已大于最大整数的平方根,结束判断

    if value>m:

    break

    #对该位置之后的元素进行过滤

    lst[index+1:]=filter(lambda x: x%value !=0,lst[index+1:])

    5、输出素数列表

    print(lst)

    6、shift+enter运行结果

    三、列表实现筛选法求素数的完整代码

    1、完整代码

    #输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表

    maxNumber =int(input('请输入一个大于2的自然数:'))

    lst=list(range(2,maxNumber))

    #最大整数的平方根

    m=int(maxNumber**0.5)

    for index,value in enumerate(lst):

    #如果当前数字已大于最大整数的平方根,结束判断

    if value>m:

    break

    #对该位置之后的元素进行过滤

    lst[index+1:]=filter(lambda x: x%value !=0,lst[index+1:])

    print(lst)

    对于输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表,则是利用输入数字最大整数的平方根进行对比,通过python特定的库filter()、enumerate()的运用来进行筛选,列出所得的素数

    以上就是本次博客的全部内容啦,希望对小伙伴们学习python有所帮助哦!喜欢的小伙伴们记得点赞哦!遇到问题的小伙伴评论区留言哦,林君学长耐心为大家解答,这个学长不太冷

    陈一月的又一天编程岁月^ _ ^

    展开全文
  • python程序设计:筛选法求素数

    千次阅读 2020-03-14 23:58:48
    使用列表实现筛选法求素数:编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。 2. 思路解析: 整个题目要求还是比较简单的,只要知道怎么筛选除素数就可以了,涉及的语法和内置函数都是...
  • python实验——第三次

    2020-03-30 21:14:46
    使用列表实现筛选法求素数 实验目的 (1)了解素数的定义。 (2)理解筛选法求解素数的原理. (3)理解列表切片操作。 (4)熟练运用内置函数enumerate() (5)熟练运用内置函数filer(。 (6)理解序列解包的工作...
  • python——第五次

    2020-04-16 22:36:05
    使用集合实现筛选法求素数 实验目的 (1)理解求解素数的筛选法原理。 (2)理解 Python 集合对象的discard()方法。 (3)熟练运用列表推导式。 (4)理解for循环的工作原理。 实验内容 输入一个大于2的自然数,输出...
  • python简单程序编写.zip

    2021-03-31 14:53:13
    1034: 列表实现筛选法求素数 23 1033: 斐波那契数列Fibonacci问题 24 1040: 23333 26 1041: 整数数列求和 27 1042: 星号三角形 28 1044: aaaa + bbbb 29 1045: 6翻了 31 1046: 有理数四则运算 32 1032: 密码 33 1049...
  • 《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
  • 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例115 使用面向对象思想查找字符串中的...
  • 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例115 使用面向对象思想查找字符串中的...
  • 实例111 使用重载方法实现不同类型数据的计算 5.2 结构与类 实例112 通过结构计算矩形的面积 实例113 通过类继承计算梯形面积 实例114 封装类实现一个简单的计算器 实例115 使用面向对象思想查找字符串中的...
  • 实例083 使用迭代法求某数平方根 实例084 小管家房贷计算器 实例085 个人所得税计算器 4.2 判断类算法 实例086 判断闰年 实例087 判断身份证是否合法 实例088 判断城市电话区号是否正确 4.3 排序类算法 实例...
  • 实例083 使用迭代法求某数平方根 实例084 小管家房贷计算器 实例085 个人所得税计算器 4.2 判断类算法 实例086 判断闰年 实例087 判断身份证是否合法 实例088 判断城市电话区号是否正确 4.3 排序类算法 实例...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    的值 52 <br>0069 最大公约数 52 <br>0070 最小公倍数 53 <br>0071 判断素数的算法 53 <br>0072 如何判断一个数是否是完数 54 <br>0073 歌德巴赫猜想的算法 54 <br>0074 八皇后...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

使用列表实现筛选法求素数