求助大佬python使用集合实现筛选法求素数这个的解释
# 使用集合实现筛选法求素数num = int(input("请输入大于2的自然数"))
number = set(range(2, num))
m = int(num ** 0.5) + 1
primesLessThanM = ]
for p in primesLessThanM:
for i in range(2, num // p + 1):
number.discard(i * p)
print(number)
能麻烦大佬都解释一下吗? 比如检测47是不是质数 需要用47除以2 除以3 除以4 除以5一直除到6看能不能整除就是质数
因为6是int(sqrt( 47)) 如果47能分解为两个因数一定是一个比根号47大一个比根号47小
但是你这个没用到集合
用集合的话大概就是要用把之前的质数放到一个集合 下次检测新的质数可以只用这个集合里的去除 kogawananari 发表于 2021-10-23 22:34
比如检测47是不是质数 需要用47除以2 除以3 除以4 除以5一直除到6看能不能整除就是质数
因为6是int ...
m = int(num ** 0.5) + 1
大佬,这里为什么要先开根号然后加1呢?
]
这句还是没懂,能麻烦您写一下这个展开的吗?
谢谢!!
pallas 发表于 2021-10-24 12:04
m = int(num ** 0.5) + 1
大佬,这里为什么要先开根号然后加1呢?
]
加1是因为range是左闭右开区间
展开就算了 我这里没装python怕给你展开错了
页:
[1]