Python编程之欧拉计划(1-10)
欧拉计划
欧拉计划(Project Euler)看看能做到啥地步。
1、可被3或5整除的自然数之和
求小于1000的所有自然数中,可被3或5整除的数字之和。
# 求小于1000的所有自然数中可被3或5整除的数字之和
print(sum(i for i in range(1000) if i % 3 == 0 or i % 5 == 0))
输出:
233168
2、斐波那契数列中所有偶数之和
求不大于4000000的斐波那契数列中所有偶数之和。
# 斐波那契数列生成器
def fibonacci(n):
yield 1
a, b = 1, 2
while b < n:
yield b
a, b = b, a + b
# 数列中的偶数求和
print(sum(x for x in fibonacci(4000000) if x % 2 == 0))
输出:
4613732
3、求600851475143的最大质因数
最大质因数不会大于平方根,所以从平方根倒推回去,能整除又是质数就是答案。
# 判断n是否质数,质数返回True
def isprime(n):
if n == 2:
return True
elif n < 2 or n % 2 == 0:
return False
for i in range(3, int(n ** 0.5) + 1, 2):
if n % i == 0:
return False
return