求小于n的质数个数
Posted mydesky2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求小于n的质数个数相关的知识,希望对你有一定的参考价值。
分析问题,最笨的方法就是遍历,通过分析质数与合数的特点,可以缩小遍历的范围。
import math # 小于自然数n的素数有多少个 def countPrime(n): if n <= 1: return 0 else: count = 0 i = 2 while i <= n: if isPrime(i): count = count + 1 i = i + 1 return count # 最笨的方法,遍历所有小于num的数,是否存在除了1之外的其他因数,如果不存在,则为素数。 # 判断一个自然数num是不是素数。如果一个数是合数,那么一定存在两个因数a和b,a<=sqrt(num), b>=sqrt(num)。因此可以将遍历范围缩小 def isPrime(num): divisor = math.sqrt(num) i = 2 while i <= int(divisor): if num % i == 0: return 0 i = i + 1 return 1 if __name__ == "__main__": n = 20 print(countPrime(n))
打印结果:8
以上是关于求小于n的质数个数的主要内容,如果未能解决你的问题,请参考以下文章
给出一个自然数N,小于N且与N互质的自然数的个数为AN,求A2006