美文网首页
18-04-18:python3 质数(素数)判定

18-04-18:python3 质数(素数)判定

作者: 周少言 | 来源:发表于2018-04-18 21:21 被阅读0次

初稿时间:04-18
定稿时间:
推敲过程请点击

质数判定

对于一个给定的正整数N,如何判定其为质数(合数)?

  • 2到Root(N)区间,不存在任何一个整数能整除N,则N为质数(更容易理解:在这个区间,只要存在一个整数能整除N,则N为合数)
    伪代码(以下Root(N) 表示N的平方根):
Def  is_Prime(N):
    flag=0 
    For num from  2  to   Root(N):
        IF    num能整除N
            flag=1
            break
   IF   flag=0
         print   N为质数
   Else
        print   N为合数

总结一下存在任何一个 就成立 与 不存在任何一个才成立的代码思路:

flag = 0
for 循环
      if   conditionTrue
             flag = 1
             break
if     flag = 0
     print   不存在任何一个元素符合循环条件
else 
     print    只要有一个元素符合循环条件

考虑到时间复杂度,可做如下优化:

  • 3到Root(N)区间,没有任何一个奇数能整除N(这个区间的偶数不可能成为质数的因数),则N为质数:
Def     is_Prime(N):
    flag=0
    For num  from 2 to  Root(N),   step=2  :
            IF    num能整除N
                    flag=1
                    break
    IF   flag=0
          print  N为质数
    Else
           print    N为合数

接下来用python3实现优化后的伪代码

文件保存为 prime.py

#!/usr/bin/env python3

import sys,os
import math

''''
实现
- 判断整数N是否为质数
- 打印整数N范围内所有的质数
- 计算整数N范围内所有质数的个数

'''

def prime_flag(n):
    """
    如果flag的值为0,则n为质数
    如果flag的值为1,则n为合数

    """

    flag = 0
    num = int(math.sqrt(n))
    for i  in range(2, num+1):
        if  int(n) % i == 0:
            flag = 1
            break
    return flag

def is_prime(n):
    flag = prime_flag(n)
    if flag == 0:
        print(str(n) + " is a prime number")
    else:
        print(str(n)+" is a composite numbe")

def print_all_prime(integer):
    prime_list = [2,]
    prime_count = 1


    for  n  in  range(3, integer + 1 , 2):
        flag = prime_flag(n)
        if  flag == 0:
            prime_list.append(n)
            prime_count += 1

    print("整数N范围内的质数:\n" , prime_list)
    print("这些质数的总数为: %d " %  prime_count)


if __name__ == "__main__":
    print("本程序有以下功能:\n1 判断您输入的整数是否为质数\n
2列出您输入的整数的范围内所有的质数\n
3 计算这些质数的数量\n")
    n = int(input("请输入一个大于3的整数>>>"))
    is_prime(n)
    print_all_prime(n)

2018年4月21日在centos7 python3测试成功

相关文章

网友评论

      本文标题:18-04-18:python3 质数(素数)判定

      本文链接:https://www.haomeiwen.com/subject/pdibkftx.html