Python编程之欧拉计划45~46

欧拉计划

欧拉计划(Project Euler)。

45、在40755之后最小的既是五角数又是六角数的三角数是多少?

三角形数、五边形数和六角形数分别由以下公式给出:
三角形数 T n = n ( n + 1 ) / 2 Tn=n(n+1)/2 Tn=n(n+1)/2
1, 3, 6, 10, 15, …
五角形数 P n = n ( 3 n − 1 ) / 2 Pn=n(3n−1)/2 Pn=n(3n1)/2
1, 5, 12, 22, 35, …
六边形数 H n = n ( 2 n − 1 ) Hn=n(2n−1) Hn=n(2n1)
1, 6, 15, 28, 45, …
可以验证, T 285 = P 165 = H 143 = 40755 T_{285} = P_{165} = H_{143} = 40755 T285=P165=H143=40755
找出下一个同时是三角形数、五角形数和六角形数的数。
分析:
六角数一定是三角数,所以只需递推六角形数,判定是否五角形数即可

n = 144
while True:
    m = n*(2*n-1)
    if ((m*24+1)**0.5+1)%6 == 0:
        print(m,n)
        break
    n += 1

输出:
1533776805 27693

46、最小的不能写作一个质数与一个平方数的二倍之和的奇合数

Christian Goldbach 提出每个奇合数都可以写作一个质数与一个平方数的二倍之和:
9 = 7 + 2 × 1 2 15 = 7 + 2 × 2 2 21 = 3 + 2 × 3 2 25 = 7 + 2 × 3 2 27 = 19 + 2 × 2 2 33 = 31 + 2 × 1 2 9 = 7 + 2×1^2\\ 15 = 7 + 2×2^2\\ 21 = 3 + 2×3^2\\ 25 = 7 + 2×3^2\\ 27 = 19 + 2×2^2\\ 33 = 31 + 2×1^2\\ 9=7+2×1215=7+2×2221=3+2×3225=7+2×3227=19+2×2233=31+2×12
但是这个推测是错误的。

最小的不能写作一个质数与一个平方数的二倍之和的奇合数是多少?

def is_prime(n):
    if n == 2: return True
    if 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 True

for i in range(3,10000,2):
    guess = False
    if not is_prime(i):
        for k in range(1,int((i//2)**0.5)+1):
            if is_prime(i - 2*k**2):
                guess=True
                break
        if not guess:
            print(i)
            break

输出:
5777

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值