|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import math
def is_prime(number):
if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(number):
while True:
if is_prime(number):
yield number
number += 1
def solve():
total = 2
for next_prime in get_primes(3):
if next_prime < 2000000:
total += next_prime
else:
print(total)
return
if __name__ == '__main__':
solve()
看了小甲鱼写的代码 我一直搞不明白 为什么 if is_prime(3)这个地方 还可以yield 3出来 因为 在函数里面3%3已经==0了 不是false吗? 为啥还能Yield 3 哪个大神给我解释一下
我一直搞不懂为什么你觉得这段代码在 number 为 3 时会执行。 - for current in range(3, int(math.sqrt(number) + 1), 2):
- if number % current == 0:
- return False
复制代码这个 range 在 number 为 3 时是 range(3,2,2)
|
|