标签:return 个数 素数 imp 就是 math div span def
分析问题,最笨的方法就是遍历,通过分析质数与合数的特点,可以缩小遍历的范围。
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
标签:return 个数 素数 imp 就是 math div span def
原文地址:https://www.cnblogs.com/mydesky2012/p/13205207.html