Python实现primesCount函数 统计小于等于i的质数个数问题修复
问题核心原因
你现有代码的primesCount函数仅将generatePrimes返回的布尔列表直接存入结果,没有完成布尔值转整数求和的逻辑,且多次重复调用generatePrimes会产生不必要的性能开销。
修正后的完整代码
import math def generatePrimes(n): prime = [False for i in range(n)] for i in range(2, n): if i > 1: for j in range(2, int(math.sqrt(i))+1): if i % j == 0: break else: prime[i] = True return prime def primesCount(n): # 仅调用一次generatePrimes获取所有0~n-1的质数判定结果 prime_list = generatePrimes(n) count_list = [] current_count = 0 for is_prime in prime_list: # Python中布尔值本身可参与计算,True等价于1,False等价于0 current_count += is_prime count_list.append(current_count) return count_list n = int(input("Enter a number: ")) print(primesCount(n))
运行验证
输入6时,generatePrimes(6)返回的判定列表为[False, False, True, True, False, True],累加后得到的输出结果为[0, 0, 1, 2, 2, 3],完全符合要求。
内容的提问来源于stack exchange,提问作者Anony
相关产品推荐
相关产品推荐

