Python编程之欧拉计划47~48

欧拉计划

欧拉计划(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位数字。

print(sum(i**i for i in range(1,1001))%10**10)

输出:
9110846700

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值