毕达哥拉斯三元组

from math import sqrt
# a+b+c=1000   a^2+b^2=c^2
# a^2=c^2-b^2=(c+b)(c-b) 假设 c+b=s^2 c-b=t^2
# 所以 a^2=s^2*t^2  so  a=s*t
# c=(s^2+t^2)/2     b=(s^2-t^2)/2
# 所以 s*t + (s^2+t^2)/2 + (s^2-t^2)/2 = 1000 --> s^2 + st = 1000 --> t=1000/s-s
for s in range(int(sqrt(500)), int(sqrt(1000))):
    t = 1000/s - s
    if t % 1 == 0:
        if (s*t)**2+((s**2-t**2)/2)**2 == ((s**2+t**2)/2)**2:
            print('a', s*t, sep=' is ')
            print('b', (s**2-t**2)/2, sep=' is ')
            print('c', (s**2+t**2)/2, sep=' is ')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值