刘超峰 发表于 2018-8-20 18:05:46

第49课时最后一题

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()
##### for current in range(3, int(math.sqrt(number) + 1), 2):##这段看不明白啊 为啥要开方后加1呢 步径还设成2,求大神解答一下啊

塔利班 发表于 2018-8-20 18:48:51

万一number是平方数,,int(math.sqrt(number))+1才能取到
记住range上限的问题

刘超峰 发表于 2018-8-21 01:05:57

那为啥把步长设置成2呢

塔利班 发表于 2018-8-21 07:16:16

刘超峰 发表于 2018-8-21 01:05
那为啥把步长设置成2呢

偶数除了2都不是质数,把2判断完了,只管奇数就得了

刘超峰 发表于 2018-8-21 20:41:00

塔利班 发表于 2018-8-21 07:16
偶数除了2都不是质数,把2判断完了,只管奇数就得了

那number = 3 呢 那在for current in range(3, int(math.sqrt(number) + 1), 2)里怎么判断True和False??

塔利班 发表于 2018-8-21 20:44:42

不是说了吗,偶数2判断完了只在奇数里找质数了,3的时候range范围是空,循环没执行

chongchuigu 发表于 2018-8-21 20:48:54

他应该指的那个除数吧

塔利班 发表于 2018-8-21 20:57:13

chongchuigu 发表于 2018-8-21 20:48
他应该指的那个除数吧

number=3
range变成range(3,2,2)这是个空范围,直接到下一步return True

刘超峰 发表于 2018-8-21 20:59:56

塔利班 发表于 2018-8-21 20:44
不是说了吗,偶数2判断完了只在奇数里找质数了,3的时候range范围是空,循环没执行

谢谢啦 知道啦 那if __name__ == '__main__':是干哈的啊

塔利班 发表于 2018-8-21 21:08:22

刘超峰 发表于 2018-8-21 20:59
谢谢啦 知道啦 那if __name__ == '__main__':是干哈的啊

是此模块单独运行时才运行solve()
被其他模块import时,__name__!='__main__'
这小甲鱼课程里有

刘超峰 发表于 2018-8-21 21:53:40

塔利班 发表于 2018-8-21 21:08
是此模块单独运行时才运行solve()
被其他模块import时,__name__!='__main__'
这小甲鱼课程里有

那最后是怎么得出结果的呢,我跑了一下程序没有返回结果啊
number我要传数字就去吗

刘超峰 发表于 2018-8-21 21:56:06

刘超峰 发表于 2018-8-21 21:53
那最后是怎么得出结果的呢,我跑了一下程序没有返回结果啊
number我要传数字就去吗

好啦 是电脑反应慢了 要等一会才有结果 哈哈

zhangfeiwen 发表于 2020-10-7 14:14:47

插个眼
页: [1]
查看完整版本: 第49课时最后一题