精华内容
下载资源
问答
  • Python3生成质数列表

    千次阅读 2019-05-30 14:35:16
    遵循埃氏筛法的思想,使用filter函数和生成器生成给定自然数内的质数(又称素数)列表。 本文章总结自廖大的python教程。 1. 首先直接生成奇数列表,因为2作为最小的质数,显然所有大于2的偶数都将被排除。 ...

    遵循埃氏筛法的思想,使用filter函数和生成器生成给定自然数内的质数(又称素数)列表。

    本文章总结自廖大的python教程

     

    1. 首先直接生成奇数列表,因为2作为最小的质数,显然所有大于2的偶数都将被排除。

    def odd_generator():
        n = 1
        while True:
            n += 2
            yield n

     

    2. 生成筛选函数。

    def not_divisible(n):
        return lambda x: x % n > 0

    注意,此函数返回的是一个匿名函数,而不是某个具体的值。单独调用此函数的正确方式是 not_divisible(2)(10),返回False。

     

    3. 生成质数生成器。

    def primes():
        n = 2
        it = odd_generator()
    
        while True:
            n = next(it)
            yield n
            it = filter(not_divisible(n), it)

     

    4. 在给定自然数范围内生成质数列表。

    for n in primes():
        if n < 1000:
            print(n)
        else:
            break

     

    展开全文
  • python列表中的质数提取出来

    千次阅读 2019-02-21 08:50:45
    a=[3,7,83,29,31,6,10,50,89,73] for i in a: # for j in range(2,i): if i%j==0: print("%d不是质数"%i) break print("%d是质数"%i) break
    a=[3,7,83,29,31,6,10,50,89,73]
    for i in a:         #
        for j in range(2,i):
            if i%j==0:
                print("%d不是质数"%i)
                break
            print("%d是质数"%i)
            break
    
    展开全文
  • python判断质数

    千次阅读 2014-12-28 00:18:49
    学习了基本的列表、元组、字典等基本数据结构的操作,从现在开始学习一些基本的语法、函数和模块,以及用python实现一些算法。 虽然现在还没有学到很深的地步,但是试着去做一些记载。 从今天开始写python的学习,...

    学习python断断续续有两个多星期了。学习了基本的列表、元组、字典等基本数据结构的操作,从现在开始学习一些基本的语法、函数和模块,以及用python实现一些算法。

    虽然现在还没有学到很深的地步,但是试着去做一些记载。

    从今天开始写python的学习,主要是开一个头。给自己一个学python,记录的念想!

     

    题:python判断一个数是否是质数。

    定义法: 

    因为一个数n如果在2,到根号n内没有被整除,那么在根号n,到n之间也一定没有被整除.

                       n=(√n)*(√n)

                       假设n=x*y,如果x与y都不是√n,那么当中必定有一个小于√n,一个大于√n

                       所以如果n在(2,√n)不能被整除,那么在(√n,n)内也一定不能被整除,

                       因此只需判断在(2,√n)就可以了,而不用判断在(2,n)内.

     

    import math
    m=int(raw_input("input a num:"))
    n=math.sqrt(m)
    n=round(n)
    while n>1:
        if m%n ==0:
            print(m,'has factor',n)
            break
        n -= 1
    else:
        print(m,'is a prime')
    在这里有几处需要注意:1、输入的时候是输入字符串的形式,需要转换

        2、开方之后是浮点数,需要取整。此处有round向上取整。int()向下取整

        3、此求素数方法不够快,需改进。

        4、此处用了循环else语句,控制权离开循环而又没有碰到break语句时会执行。即当并列的while部分没有执行的时候,执行else部分。



    展开全文
  • python质数-初学python知识强化

    千次阅读 2018-08-19 14:40:42
    对于初学python的小白而言,求质数是大家首先拿来练手的题目,通过求质数方法的优化,以加深对所学语法、数据结构的理解,下面我么就求质数的多种方法加深对for循环、列表、以及set的理解 1、普通求解 print(2,...

    对于初学python的小白而言,求质数是大家首先拿来练手的题目,通过求质数方法的优化,以加深对所学语法、数据结构的理解,下面我么就求质数的多种方法加深对for循环、列表、以及set的理解
    1、普通求解

    print(2,end=' ')
    
    for i in range(3,100000,2):#排除偶数,只求奇数,计算量减少一半
        for j in range(3,i**0.5+1,2):
            if i%j == 0:
                break
        else:
            print(i, end=' ')
    

            这种方法主要是完成对for循环的应用,同时,通过处理,尽量减少for循环的迭代次数,提高运行效率。当然,由于所有质数都在6的倍数左右,因此,可以在计算中使用这一特性,代码如下:

    print(2,3)                      #2和3特殊处理
    i = 5
    k = 2
    while i <= 100000:
        for j in range(3,int(i**0.5)+1,2):
            if i%j == 0:
                break
        else:
            print(i)
        i += k                      #通过改变k的值,使i在6的倍数左右
        k = 方6

    2、使用列表的方法:
           通过对质数性质的了解,我们了解到判断一个数是否为质数,我们只需要将其对比其小的数求余即可,因此,我们可以建立一个列表,将所求的质数添加到列表中,代码如下

    lprime = [2,3]
    i = 5
    k = 2
    while i <= 100:
        for j in lprime:
            if i%j == 0:
                break
        else:
            lprime.append(i)
        i += k
        k = k^6
    print(lprime)

            使用列表的思想是将前一次的运算结果使用到下一次的运算中去,这在编程过程中可以减少计算次数,提高程序的运行效率,当然,以上代码还可以优化,在此不予赘述。
            以上使用列表方法中,由于频繁的使用append方法更改列表长度,因此降低了程序的运行效率,那么,我么可不可以建立一个列表,不用去频繁更改其长度,只对其内部的值进行更改来求取质数呢?通过列表特性,我们发现,列表的索引和值可以给我们提供两个信息,因此,可以采用对列表标记的方法求取质数:

    n = 100000
    nums = [0]*(n+1)                #建立一个列表,长度为质数求取范围
    
    for i in range(2,int(n**0.5)+1):         #将所有索引值为非质数的元素标记为1
        if nums[i]:
            continue
        for j in range(i**2,n+1,i):
            if nums[j]:
                continue
            nums[j] = 1
    
    for i in range(2,n+1):
        if not nums[i]:
            pass
            print(i)

           通过使用列表标记的方法,一次性创建一个列表,其时间复杂度会大幅度降低,在此过程中,我们需要了解列表的特性,怎么样的程序才能降低程序的时间复杂度,同时,当空间复杂度和时间复杂度相冲突时,我们应该怎么样取取舍

    3、使用set集合的方法
            set时无序的、可变的、不重复的元素的集合,由于对set内元素的读取是通过hash值来实现的,因此读写速度特别快,我们可以根据这一特性来求质数

    n = 100000
    primeset = set(range(1,n,2))
    
    m = int(n**0.5)+1
    for i in range(3,m,2):
        if i not in primeset:
            continue
        for j in range(i**2,n+1,i*2):
            primeset.discard(j)
    
    print(primeset)    

    以上程序利用了set内部元素可变、无序,读取删除快的特点,因此提高了程序效率
    总结

    (1)在初学阶段,我们更注重于如何去解决问题,使用最初级的手段解决复杂问题时,要注意不能缺项漏项,培养严谨的作风
    (2)在使用语言为我们提供的内置数据结构时,要对数据结构有清晰的了解,这样才能写出高效的代码
    (3)对一个问题的反复思考,对代码的反复改进,有助于加深对语言本身的理解,这对于初学阶段的人是十分必要的

    展开全文
  • python求取列表中的质数

    千次阅读 2019-03-13 21:56:01
    a=[3,7,18,49,83,100,29,31] b=[] for i in a: for j in range (2,i): if i%j==0: print(i,‘不是质数’) break else: print(i,‘是质数’) b.append(i) print(b)
  • python随笔-质数

    2019-01-15 17:27:00
    python3 pycharm 质数:又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 def prime_number(limit): ... :return: 上限内质数列表 ''' list = [] for num ...
  • 这个是照我以前C语言写的输出质数博客改的,博客地址 myarr = [0, 1, 3, 4, 6, 7, 8, 100, 101, 103, 104, 107, 110, 111] def isprime(n): if n == 1 or n == 0: return False elif n == 2: return True else:...
  • [] #最后输入质数列表 listCheck = [] #中间用来检查的列表 for i in range(2,101): for j in range(2,i): m = i % j listCheck.append(m) #把求余数的结果装到listCheck中 n = listCheck.count...
  • Python——求质数

    2018-11-18 21:45:33
    如果是质数将其列表对应下标的值改为0. n_list = [1 for x in range(10**N)] #0,1特殊都不为质数。 n_list[0] = 0 n_list[1] = 0 for i in range(2,len(n_list)//2+1): if n_list[i] == 1: ...
  • 题目如下 先贴代码 import math #判断素数 def isPrime(x:int): if x > 1: for i in range(2,int(math.... 遍历替换好后的列表lst2,用lst3来记录每个被质数分割的小列表,用lst_result来记录最终要求得到的列表即可。
  • 主要介绍了通过代码实例展示Python列表生成式的用法,包括找出质数、算平方数等基本用法,需要的朋友可以参考下
  • zhishu.append(2)#把2作为质数列表的第一个数字放进去 # while (len(zhishu)<=20): 这一行可以取代下一行,只找出前20个质数 while(1): #一直运行 i+=1#寻找质数只需要判断不断变大的i不能整除我们质数表里面的...
  • python练习1 质数分解

    千次阅读 2014-08-14 11:46:12
    写一个函数接受一个int型参数,判断改参数是否为质数,返回布尔值。写一个函数接受一个int型参数,返回该参数的所有因子,返回一个列表。利用上面两个函数编写一个函数,接受一个int型参数,返回这个参数的最大质...
  • Python|自定义判断质数的函数

    千次阅读 2020-08-12 15:45:40
    Python制作一个判断数字是否为质数的函数 如果有更好的思路,欢迎评论区交流(●’◡’●) 函数描述 质数:在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 自然数:用数码0,1,2,3,4……所表示...
  • class Solution(object): def countPrimes(self, n): if n <= 2: return 0 ... output = [1] * n # 首先生成一个全部为1的列表 output[0], output[1] = 0, 0 for i in range(2, int(n**0.5)+1):
  • 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。 如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7)) [2,3,5,7] 输入描述: ...
  • python3计算质数 (厄拉多塞筛法)

    千次阅读 2019-06-12 20:40:42
    def countPrimes(self, n: int) -> int: if n < 3: return 0 else: # 首先生成了一个全部为1的列表 output = [1] * n ... # 因为0和1不是质数,所以列表的前两个位置赋值为0 ...
  • python求100以内的质数

    千次阅读 2020-11-25 10:45:02
    list=[] flag=True for i in range(2,100): for j in range(2,i): if i%j==0: flag=False break else: flag=True if flag==True: list.append(i) # ','.join(list) ...1.首先写定义一个空列表跟.
  • 思路:定义一个长度为n的bool列表,表示输入n的所有因子,True表示非整除因子,False表示整除因子,依次判断,若遇到可以整除的因子标记其为False,最后判断bool列表中是否有False判断输入数是否为质数) ...
  • 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正...存到列表 #2、遍历所有的质数,求出和等于给定整数的质数对; def isprime(num): #判断是否是质数 import math if num <= 1 or not isinstance(nu
  • 文章目录一、列表生成式二、简单练习1、成一个列表,列表元素分别为[1**1 2**2 3**3...9**9]2、找出1~10之间的所有偶数3、S1='ABC' S2='123' A1 A2 A3..4、找出1~10之间的所有偶数....列表生成式:python内置非常...
  • Python循环和列表

    2020-12-08 10:44:14
    day04 循环和列表 一 while循环 1 while —else格式 while 条件: 重复执行的代码(一行或多行代码) else: 条件不满足时执行此处代码 结论:如果while中执行了break语句,那么else就不执行,反之,就执行。 ...
  • 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整 数,并输出结果。输 入值小于1000。 如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别 为(5,5),(3,7)) [2,3,5,7] 输入描述...
  • 因为写别的程序想要一边遍历一边删除列表里的元素,就写了一个这样的程序...以上这篇python求质数列表的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文
  • 统计所有小于非负整数 n 的质数的数量。 示例: ...将素数单独存放一个列表遍历,较为耗时。 class Solution(object):  def countPrimes(self, n):  """  :type n: int  ...
  • 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整 数,并输出结果。输 入值小于1000。 如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别 为(5,5),(3,7)) [2,3,5,7] 输入描述: ...
  • 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整 数,并输出结果.输入值小于1000.如输入为10, 程序应该输出结果为2(共有两对质数的和为10,分别为(5,5),(3,7)) -输入描述: 输入包括一个整数n,(3 ≤...
  • Lesson 83 python中的列表生成式 文章目录1. 用列表的append方法生成列表2. 用列表生成式生成一个列表3. 列表生成式练习1:用列表生成式生成一个列表,包含1到num的所有质数4. 列表生成式练习2:用列表生成式生成一...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

python质数列表

python 订阅