给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。
我的方法:
class Solution:
def countPrimes(self, n: int) -> int:
if n == 1:
return 0
count = 0
for i in range(2,n):
is_pri_num = 1
for j in range(2, int(i**0.5)+1):
if i % j == 0: #不是质数
is_pri_num = 0
break;
if is_pri_num == 1:
count += 1
return count
当运行到测试样例n=5000000时,运行结果显示超出时间限制,运行不通过
参考视频学习了更高级的算法:埃筛法
修改视频思路代码:
class Solution:
def countPrimes(self, n: int) -> int:
if n == 1:
return 0
count = 0
dict={}
for i in range(2,n):
dict[i] = True
for i in range(2,n):
if dict[i] == True:
count += 1
if i**2 < n:
for j in range(i**2, n, i):
dict[j] = False
return count

通过
1868

被折叠的 条评论
为什么被折叠?



