python 49课作业,求详解
#1. 10 以内的素数之和是:2 + 3 + 5 + 7 = 17,那么请编写程序,计算 2000000 以内的素数之和?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() 请复习range用法 for current in range(3, int(math.sqrt(number) + 1), 2):#这三行语句是什么意思
for current in range(3, int(math.sqrt(number) + 1), 2):
current 是自己定义的一个标签名字,很明显你对range用法并不熟练,假设 range(1,7,2),其内容其实是1,3,5,经过for循环迭代出来,range(1,7)内容是1-6,range(1,7,2)中的2,其实是跳的意思,同理range(1,7,3)的内容是1和4。
for current in range(3, int(math.sqrt(number) + 1), 2),而sqrt()函数的作用是返回内容的平方根,所以这行代码的意思是将range()中的内容迭代于current,其内容是3到number的平方根,跳2,
其中+1的作用是什么?
range(1,x),是不会打印x的,而是止于x的前一位,所以+1抵消,使其包含number的平方根
基础要打牢{:10_256:}
页:
[1]