• 质数


    1.判断一个数是否为质数(除了1和它本身之外,不能被其他数整除)

    第一版:

    #判断一个数是否为质数
    def is_prime1(n):
        if n == 0 or n == 1:
            return 0
        i = 2
        while i < n:
            if n % i == 0:
                return 0
            i += 1
        return 1

    第二版:

    import math
    def is_prime2(n):
        if n == 0 or n == 1:
            return 0
        i = 2
        while i <= int(math.sqrt(n)):
            if n % i == 0:
                return 0
            i += 1
        return 1

    第三版:

    相比于第二版,省去了对去偶数因子的判断

    import math
    def is_prime3(n):
        if n == 0 or n == 1:
            return 0
        if n % 2 == 0:
            return n == 2
        if n % 3 == 0:
            return n == 3
        if n % 5 == 0:
            return n == 5
    
        for i in range(7,int(math.sqrt(n))+1,2):  #省去了对偶数的判断,如果概述能够被偶数整除,则一定能被2整除,程序早就返回了
            if n % i == 0:
                return 0
        return 1

    2.显示整数n以内的所有质数:

    #查找n以内的所有质数
    def prime(n):
        flags = [1]*(n+2)  #设置标志位,默认都是1,表示是质数
        flags[1] = 0   #1不是质数
        p = 2    #质数从2开始查找
        while p <= n:
            print(p)     #打印质数
            #在python3中的range就是python2中的xrange
            for i in range(2*p,n+1,p):
                flags[i] = 0    #将该质数的倍数(非该质数本身)都置位0,表示非质数
    
            #while p <= n:
            while True:
                p += 1
                if flags[p] == 1:   #flags[n+1]=1 保证了程序最后的顺利退出
                    break
  • 相关阅读:
    题解 P1030 【求先序排列】
    行列式及其打开方式
    题解 P2580 【于是他错误的点名开始了】
    题解 P1130 【红牌】
    题解 P5239 【回忆京都】
    题解 P1184 【高手之在一起】
    【笔记】自学ST表笔记
    题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】
    树状数组自学笔记
    EBS R12.2系统logo的修改
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/6681244.html
Copyright © 2020-2023  润新知