Python计算素数个数的两种方法

作者:机器学习Zero 时间:2023-09-09 16:38:19 

素数(prime number)也叫质数,为大于1的且除1和本身以外不再有其他因数的自然数,与之相对的是合数,素数有无限个。

计算小于N的素数个数

  • 输入: 10

  • 输出: 4

小于10的素数共4个:2, 3, 5, 7

方法一:直接判断

from math import sqrt
def isPrime(n):
    for i in range(2,int(sqrt(n))+1):
        if n%i==0:
            return False
    return True
def countPrime(N):
    if N<3:
        return 0
    else:
        cou = 1
        for i in range(3,N,2):
            if isPrime(i):
                cou += 1
    return cou
print(countPrime(2))
print(countPrime(5))
print(countPrime(100))
print(countPrime(100000))  
print(countPrime(10000000))#在n>100000000时达到计算瓶颈

输出:

0
2
25
9592
664579

方法二:埃氏筛法

埃拉托色尼筛选法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选法。

要得到自然数n以内的全部素数,必须把不大于n的所有素数的倍数剔除,剩下的就是素数,具体步骤如下:先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去。

Python计算素数个数的两种方法

def couPrime(N):
   primeList = [True]*N
   for i in range(2,N):
       if(primeList[i]):
           for j in range(2*i,N,i):
               primeList[j]=False
   cou = primeList.count(True)-2
   return cou
print(couPrime(100000000)) #在n>1000000000达到计算瓶颈

输出:

5761455

来源:https://viper.blog.csdn.net/article/details/128961329

标签:Python,素数
0
投稿

猜你喜欢

  • 详解python开发环境搭建

    2023-09-17 21:37:25
  • 浅谈python requests 的put, post 请求参数的问题

    2023-05-06 14:54:47
  • Python的垃圾回收机制详解

    2023-06-03 16:03:24
  • Python小工具之消耗系统指定大小内存的方法

    2022-10-19 18:53:51
  • pandas按若干个列的组合条件筛选数据的方法

    2023-10-27 03:49:07
  • 利用Vue.js制作一个拼图华容道小游戏

    2024-05-22 10:43:11
  • 注意import和from import 的区别及说明

    2024-01-01 21:26:44
  • 关于MySQL中explain工具的使用

    2024-01-18 01:51:15
  • php网络安全中命令执行漏洞的产生及本质探究

    2023-05-30 05:34:31
  • MySQL 函数过程递归

    2008-07-25 19:32:00
  • XHTML下,JS浮动代码失效的问题

    2024-05-28 15:37:51
  • 界面内容优化的层次

    2007-11-06 13:07:00
  • JS载入数据效果!loading

    2009-01-20 18:35:00
  • SQL Server与Oracle、DB2的优劣对比

    2009-01-07 14:16:00
  • css学习笔记:安全字体

    2009-03-10 18:34:00
  • 在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

    2021-09-04 07:31:23
  • PDO::inTransaction讲解

    2023-06-06 08:32:27
  • PL/SQL number型数据

    2009-02-26 10:59:00
  • 5分钟快速掌握JS中var、let和const的异同

    2024-05-09 15:05:49
  • 按钮的反馈

    2009-01-01 20:06:00
  • asp之家 网络编程 m.aspxhome.com