zoukankan      html  css  js  c++  java
  • 质数

    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
  • 相关阅读:
    双缓冲绘图模式
    java异常
    15-11-24 system同步与异步
    15-11-23:system指令
    使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
    JTextArea 加入滚动条
    键盘事件
    monitoring_db
    del_archivelog
    Redis 4.0.14 单实例安装
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/6681244.html
Copyright © 2011-2022 走看看