精华内容
下载资源
问答
  • python怎么判断素数

    2020-09-16 14:27:44
    在本篇文章里小编给大家整理了关于python判断素数的方法和代码,需要的朋友们可以学习下。
  • 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。... 前几天偶尔的有朋友问python怎么判断素数的方法,走网上查了查,总结了python脚本判断一
  • #0、怎么判断质数?定义一个函数判断是否是质数; #1、求出整数范围内的质数;存到列表 #2、遍历所有的质数,求出和等于给定整数的质数对; def isprime(num): #判断是否是质数 import math if num <= 1 or not ...

    给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7));
    #质数
    #0、怎么判断质数?定义一个函数判断是否是质数;
    #1、求出整数范围内的质数;存到列表
    #2、遍历所有的质数,求出和等于给定整数的质数对;

    def isprime(num):  #判断是否是质数
        import math
        if num <= 1 or not isinstance(num,int):
            return False
        for i in range(2,int(math.sqrt(num)) + 1):
            if num % i == 0:
                return False
    
        return True
    
    def func(n):
        lis=[]  #存放所有质数
        result=[]  #存放所有质数对
        for i in range(n):
            if isprime(i):
                lis.append(i)
        print(lis)
    
        for a in range(len(lis)):
            for b in range(a,len(lis)):
                if lis[a]+lis[b] == n:
                    result.append((lis[a],lis[b]))
        print(result)
        print(len(result))
    
    func(10)
    

    延申知识点:
    1、判断是否为质数优化;对于每个数num,其实并不需要从2判断到num-1,我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(mun),一个大于等于sqrt(mun),据此,上述代码中并不需要遍历到n-1,遍历到sqrt(num)即可,因为若sqrt(num)左侧找不到因数,那么右侧也一定找不到因数。
    2、sqrt() 函数
    语法:math.sprt(n)
    释义:求数字n的平方根。

    展开全文
  • 题:给定一个数,判断其...首先,比如给一个数是 32,你怎么判断它的因数呢?对咯,就是从 2 开始逐个除它,所以就要用到循坏,因为你的除数是递增的,直到 32 - 1 为止。那好,看代码。 #coding:utf-8 while True:

    :给定一个数,判断其是否为素数

    分析:首先,什么事素数呢?只能被 1 和它本身整除的数叫做素数,当然,1 既不是素数也不是合数。

      知道了什么是素数,就要开始考虑怎么实现。首先,比如给一个数是 32,你怎么判断它的因数呢?对咯,就是从 2 开始逐个除它,所以就要用到循坏,因为你的除数是递增的,直到 32 - 1 为止。那好,看代码。

    #coding:utf-8
    while True:
        n = input("input an number:")
        if n < 2:
            print "this number is not a prime"
            continue
        i = 2
        while i < n:
            if n % i == 0:
                print "this number is not a prime"
                break
        i = i + 1
    
     #判断上面的循环是从break退出的还是不满足条件退出的
     #可以设定一个标志值,也可以直接根据i值判断
     if i >= n:
      print "%d is a prime" % (n)
    

    或者:

    while True:
    x = input("plz input an number:")
    if x < 2:
        print "%d is not a prime" % (x)
        continue
    
    i = 2
    bisprime = True
    while i < x:
        if x % i == 0:
            bisprime = False
            break
        i = i + 1
    
    #判断上面的循环是从break退出还是不满足循环条件退出
    #可以设定一个标志值,也可以根据i值判断
    if bisprime:
        print "%d is a prime" % (x)
    else:
        print "%d is not a prime" % (x)
    展开全文
  • 第二就是最重要的,也就是我们的的判断方法,假如给定一个区间,我们怎么样去判断它是一个素数。这里的判断方法我们肯定是用一个数去除另一个数,所以这里就出现了除数与被除数。 a:除数与被除数的范围 (循环) b:...

    1、什么是素数?

    除了1和他本身外,不能被任何数整除的整数叫素数。2是最小的素数。

    2.思路

    比如说打印1~20内的素数

    总体概括:由他的定义出发,第一他肯定是个整数。第二就是最重要的,也就是我们的的判断方法,假如给定一个区间,我们怎么样去判断它是一个素数。这里的判断方法我们肯定是用一个数去除另一个数,所以这里就出现了除数与被除数。

    a:除数与被除数的范围 (循环)

    b:除数/被除数可以整除。。。。。,不可以整除。。。。(判断)

    [root@python3_ansible python]# cat sushu.py 
    #!/usr/bin/python3
    
    for i in range(2,21):
        for j in range(2,i-1):
            if i%j == 0:
                continue
            else:
                print (i)
    [root@python3_ansible python]# python3 sushu.py |head 5567777888
    

    错误分析:
    被除数范围错误:比如说除数是5,被除数的取值范围应该是2-4,而在Python中2-4的表示应该为(2,5)
    逻判断错误:如果是i=5;按照上面的写法,j=2 j=3;5%2 != 0 print 5 ;5%3 != 0 print 5; 如果说i=6;按照上面的写法,j=2 j=3 j=4 ; 6%2 = 0 continue ;6%3 = 0 continue ;6%4 != 0 print 6这里显然是不对的,如果这里使用continue,如果除数遇到可以整除的被除数,只是将可以整除的被除数跳过,还是会遍历完不能整除的被除数。这个地方改成break

    [root@python3_ansible python]# cat sushu1.py #!/usr/bin/python3
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    for i in range(2,21):
       for j in range(2,i):
            if i%j == 0:
               break
            else:  
               print (i) 
    [root@python3_ansible python]# python3 sushu1.py |head3555777779
    

    错误分析:修改完成以后,虽然能够保证全都是素数,但是这些素数每遍历一次被除数就会打印一次,我们想要的只要他是素数就直接打印出来,而不会去遍历被除数。
    这里引进一个新思路 flag
    在看flag 之前看下python 的缩进引发的问题,如果代码是这样的会有怎样的结果

    [root@python3_ansible python]# cat sushu1.py #!/usr/bin/python3
    for i in range(2,21):
        for j in range(2,i):
            if i%j == 0:
               break       
        print (i) 
    [root@python3_ansible python]# python3 sushu1.py |head234567891011
    

    这样就把被除数全都打印出来了,无论你中间经历了什么,Python 只看缩进,如果最后的print(i)和第一行循环差四个空格,python 就默认为这是在遍历i的值

    [root@python3_ansible python]# cat sushu1.py #!/usr/bin/python3
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    for i in range(2,21):
        for j in range(2,i):
            if i%j == 0:
               break 
        print (i) 
    [root@python3_ansible python]# python3 sushu1.py |head20
    

    如果是这样,print(i)与循环并齐,打印的是循环完成以后的结果。

    [root@python3_ansible python]# cat sushu2.py 
    #!/usr/bin/python3
    temp = 0
    for i in range(2,21):
    #    temp = 0
        for j in range(2,i):        
            if i%j == 0:       
               break        
            else:       
               temp = 1  
        if temp == 1: 
            print (i)
    [root@python3_ansible python]# python3 sushu2.py |head3456789101112
    

    在Python中变量的初始值必须被定义,这个的错误原因是因为变量被赋值了一次;以i=4 为例,紧接着上一次循环,i=3的打印结束的时候,temp=1;所以当i=4的时候,temp依然等于1;4%2虽然等于0,结束了内层循环,但temp的值依然等于1,打印i=4.
    -----------------------终极版----------------------------------------------

    [root@python3_ansible python]# cat sushu2.py 
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    #!/usr/bin/python3
    for i in range(2,21):
        temp = 0  
        for j in range(2,i):     
           if i%j == 0:            
               break        
           else:        
               temp = 1 
           if temp == 1:    
               print (i)
    [root@python3_ansible python]# python3 sushu2.py 35791113151719
    

    把temp 的值赋值在循环里面,问题就解决了,i 每一次得到外层循环的一个值,temp=0.这种方法效率特别低下,因为每一个除数每取到一个值,都要遍历一遍被除数。例如除数等于5,他就要除尽2-4之间的任何一个被除数,效率低下。y=a*b缩小被除数的区间

    [root@python3_ansible python]# cat sushu3.py #!/usr/bin/python3
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    for i in range(2,21):  
      temp = 0  
      x = int(i/2)   
      for j in range(2,x+1):     
         if i%x == 0:        
           break       
         else:          
           temp = 1   
      if temp == 1:       
          print(i)
    [root@python3_ansible python]# python3 sushu3.py 5791113151719
    
    [root@python3_ansible python]# cat sushu4.py 
    #!/usr/bin/python3
    import mathfor i in range(2,21):  
      temp = 0  
      x = int(math.sqrt(i))   
      for j in (2,x+1):  
         if i%j == 0:       
           break   
         else:       
           temp = 1   
       if temp == 1:       
        print(i)
    [root@python3_ansible python]# python3  sushu4.py 35791113151719
    
    展开全文
  • python程序设计:筛选法求素数

    千次阅读 2020-03-14 23:58:48
    整个题目要求还是比较简单的,只要知道怎么筛选除素数就可以了,涉及的语法和内置函数都是比较常见的。题目需要列出所有小于输入的数字(num),所以我们需要从1遍历num-1,但是1既不是素数也不是合数,所以,我们可以...

    筛选法求素数

    1. 题目要求:

    使用列表实现筛选法求素数:编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。

    2. 思路解析:

    整个题目要求还是比较简单的,只要知道怎么筛选除素数就可以了,涉及的语法和内置函数都是比较常见的。题目需要列出所有小于输入的数字(num),所以我们需要从1遍历num-1,但是1既不是素数也不是合数,所以,我们可以直接从2开始。我们判断一个数是否为素数,就是让它(i)去除所有小于它的数,如果除了1和它本身之外能够整除,那这个数就不是素数。所以我们需要再内嵌一个for循环,遍历所有小于i的数(k),因为能被1整除不能算,所以我们从2开始,又因为如果大于i/2能整除的话,一定在2~i/2之间能整除,所以k的范围就缩小到2 ~ i/2。在python里,i/2可能存在小数,强制转化int会丢失小数,所以可以+1。实际上k的范围可以缩小至2 ~ 根号2的。python里用sqrt(n)函数求根。需要导入from math import sqrt。具体看代码

    3. Code:

    #!/usr/bin/python
    
    # 声明用于存放素数的列表
    primNumber = []
    print("请输入正整数:")
    # 接收键盘输入
    num = input()
    # 判断是否为整数,如果不是,结束程序
    if num.isdigit():
        # num转化为int类型
        num = eval(num)
        if num > 2:
            # i即为要寻找的素数,常识可知,第一个是2,从2遍历到num
            for i in range(2, num):
                # flag用于标记当前的数是否为素数(true:素数,false:合数)
                flag = True
                # k从2开始遍历到根号i即可,这里图方便,遍历到i/2+1
                for k in range(2, int(i/2) + 1):
                    # 判断i是否可被k整除,如果可以,直接判断为合数
                    if i % k == 0:
                        flag = False
                        break
                if flag:
                    primNumber.append(i)
            print(primNumber)
        else:
            print("输入是数字不能小于2!")
    else:
        print("输入了非法字符!")
    
    
    展开全文
  • python小练习7:求出100以内的素数

    万次阅读 2016-10-21 18:00:56
    在前面的博客中我已经写了,怎么判断一个数是否为素数。现在我来给你一种思路,就是从2~100,逐个判断素数,如果是素数,就打印,否则不打印。看下面的图,你就会明白一切: 现在明白了吧,因为 1 既不是素数也不是...
  • 普及一下素数,初中学的都忘记了 百度:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。...好了,python代码怎么写,百度给出了是否是...
  • 第二就是最重要的,也就是我们的的判断方法,假如给定一个区间,我们怎么样去判断它是一个素数。这里的判断方法我们肯定是用一个数去除另一个数,所以这里就出现了除数与被除数。 a:除数与被除数的...
  • 判断质数 Python Java C++

    2020-12-15 21:04:37
    那么怎么使用程序去判断一个数,是否是质数。 初始版本: 最原始的判断方法就是用for循环遍历每一个数,这种方法固然可行,但是如果用来A题,恐怕解题速度不太理想。 升级版本: 细想一下,1*3和3*1是不是一回事,...
  • 重点是什么是质数,以及怎么求...判断101-200之间有多少个素数,并输出所有素数。 何为素数: 质数(外文名prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这...
  • python 简单实例训练(11~20)

    千次阅读 2016-10-28 18:07:46
    用常规思维,如果给定一个数是5,怎么判断呢?那就是判断range(2,5)这些数是否都能被5整除,如果还不懂,就要百度咯~~方法一:用循环#coding:utf-8 #判断素数 while True: x = input("请输入一个正整数:") i = 2 #...
  • 第六周学习总结

    2019-04-08 23:16:52
    又是新的一周,虽然我们还是学习的循环结构,但是在其中又学到了许多新的东西,我们练习了从1到100之间的奇数相加的结果;...将素数判断核心部分抽取出来生成一个方法(就是Python里的函数): 好...
  • 文章目录1.else语句2.with 1.else语句 在Python中,else语句不仅能跟if语句搭配,构成“要么怎样,要么不怎么样”的语境;... count = num // 2#//为整除,判断素数,只需依次判断当前数num除以1到(num /
  • T-primes #142DIV2

    2017-12-17 13:44:23
    第一次写博客(之前写过一篇自己给删了,... 这道题本来我是用枚举判断…然后无论怎么改都会爆掉,于是看了题解,开始学习质数筛……(本来还以为会是道简单题的) 根据现学的素数定理(在n以内随机选一个数,它是质
  • 2.2.8 求2~2000的所有素数.有足够的内存,要求尽量快 2.2.9 A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。 2.3.0 将单向链表reverse,如...
  • 怎么判断一个数组是否已经排序 普通map如何不用锁解决协程安全问题 array和slice的区别 golang面试题:json包变量不加tag会怎么样? 零切片、空切片、nil切片是什么 slice深拷贝和浅拷贝 map触发扩容的时机,满足...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

python怎么判断素数

python 订阅