第49课时最后一题
import mathdef 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()
##### for current in range(3, int(math.sqrt(number) + 1), 2):##这段看不明白啊 为啥要开方后加1呢 步径还设成2,求大神解答一下啊
万一number是平方数,,int(math.sqrt(number))+1才能取到
记住range上限的问题 那为啥把步长设置成2呢 刘超峰 发表于 2018-8-21 01:05
那为啥把步长设置成2呢
偶数除了2都不是质数,把2判断完了,只管奇数就得了 塔利班 发表于 2018-8-21 07:16
偶数除了2都不是质数,把2判断完了,只管奇数就得了
那number = 3 呢 那在for current in range(3, int(math.sqrt(number) + 1), 2)里怎么判断True和False?? 不是说了吗,偶数2判断完了只在奇数里找质数了,3的时候range范围是空,循环没执行 他应该指的那个除数吧 chongchuigu 发表于 2018-8-21 20:48
他应该指的那个除数吧
number=3
range变成range(3,2,2)这是个空范围,直接到下一步return True 塔利班 发表于 2018-8-21 20:44
不是说了吗,偶数2判断完了只在奇数里找质数了,3的时候range范围是空,循环没执行
谢谢啦 知道啦 那if __name__ == '__main__':是干哈的啊 刘超峰 发表于 2018-8-21 20:59
谢谢啦 知道啦 那if __name__ == '__main__':是干哈的啊
是此模块单独运行时才运行solve()
被其他模块import时,__name__!='__main__'
这小甲鱼课程里有 塔利班 发表于 2018-8-21 21:08
是此模块单独运行时才运行solve()
被其他模块import时,__name__!='__main__'
这小甲鱼课程里有
那最后是怎么得出结果的呢,我跑了一下程序没有返回结果啊
number我要传数字就去吗
刘超峰 发表于 2018-8-21 21:53
那最后是怎么得出结果的呢,我跑了一下程序没有返回结果啊
number我要传数字就去吗
好啦 是电脑反应慢了 要等一会才有结果 哈哈 插个眼
页:
[1]