python经典练习题:当a+b+c=1000且a**2+b**2=c**2,求a、b、c

import time
start_time = time.time()
for a in range(501): # 因为极限条件下a=c且a+c=1000,所以a的范围为0~500
    for b in range(a,1001-a): # 因为极限条件且不知道c的大小时a+b=1000,可以仍未b的范围为0~1000-a,因为a**2+b**2=c**2为勾股定理,所以存在a、b值互换的情况,所以可以认为b的起始范围为a
        c = 1000-a-b
        if a ** 2 + b ** 2 == c**2:
            print(a,b,c)
            a,b = b,a # 因为a**2+b**2=c**2为勾股定理,所以存在a、b值互换的情况,减少迭代循环的次数
            print(a,b,c)
            break # 因为a**2+b**2=c**2为勾股定理,易知a的值确定时,b、c的值唯一,所以打断循环,减少迭代次数
print(time.time()-start_time)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值