Python编程之欧拉计划47~48
- 欧拉计划
-
- 47、找出最小的具有四个不同质数因子的四个连续整数
- 48、求前1000项的自幂方数的和的最后10位数字
欧拉计划
欧拉计划(Project Euler)。
47、找出最小的具有四个不同质数因子的四个连续整数
前两个连续数字有两个不同的质因数是:
14 = 2 × 7 , 15 = 3 × 5 14 = 2×7,\quad 15 = 3×5 14=2×7,15=3×5
前三个连续数字有三个不同的质因数:
644 = 2 2 × 7 × 23 , 645 = 3 × 5 × 43 , 646 = 2 × 17 × 19 644 = 2^2×7×23, \quad645 = 3×5×43, \quad646 = 2×17×19 644=22×7×23,645=3×5×43,646=2×17×19
找到前四个连续的整数,每个整数有四个不同的质因数。这些数字中的第一个是什么?
# 如果n有四个不同质因数,返回True
def is_factor4(n):
fs = set()
while n > 1:
for i in range(2, n + 1):
if n % i == 0:
n = n // i
fs.add(i)
break
return len(fs) == 4
fc = 0
for i in range(2 * 3 * 5 * 7, 1000000):
if is_factor4(i):fc += 1
else:fc = 0
#连续4个
if fc == 4:
print(i - 3)
break
输出:
134043
48、求前1000项的自幂方数的和的最后10位数字
前10项的自幂方数的和为
1 1 + 2 2 + 3 3 + … + 1 0 10 = 10405071317 1^1 + 2^2 + 3^3+ … + 10^{10}= 10405071317 11+22+33+…+1010=10405071317
求前1000项的自幂方数的和的最后10位数字。
输出:
9110846700