天天看点

Python编程之欧拉计划47~48欧拉计划

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