用Python求1~1万范围内的勾股数元组

上篇文章求1~100范围内容勾股数元组,运行正常;但是后来把范围调整到1000,程序就运行得超级慢,笔记本差点死机。试着改良一下程序,花了一晚上时间,重写了一版。

这次程序运行快了很多,求1千以内勾股数元组2秒运行完,1万以内用时234秒。

再次优化,发现平方和开平方能开得尽就是勾股数,省略了中间的一个步骤,求1万以内的勾股数元组,用时182秒。

---------------------------------------------------------------------------------------------------------------------------------

思路:

勾股数的公式 a² + b² = c² ,其中a、b、c这3个数都是正整数。假设a < b < c,在c未知的情况下,我可以先在1万内找出a和b,设x = a² + b² = c²,很明显对x开平方的结果是一个正整数,因此第一步要做的,就是把平方和开不尽的情况给过滤掉,这节省了很多计算量。

---------------------------------------------------------------------------------------------------------------------------------

import time
import math

start_time = time.time()

tri_list = [] #勾股数列表
final

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值