c语言寻找勾股数,Numpy 寻找勾股数

寻找勾股数,勾股数即毕氏三元数(Pythagorean triple),有关勾股数的更多信息请见维基百科页面http://en.wikipedia.org/wiki/Pythagorean_triple。勾股数和勾股定理(毕式定理)是紧密相关的。想必你在中学时代的几何课中,已经学过勾股定理了。

构成勾股数的三个自然数分别代表直角三角形的三条边,因此遵守勾股定理。本例将寻找三个自然数的和等于1000的勾股数,这需要用到欧几里得公式:

b5581fa83211febdc3730359abb05048.png

我们将在本例中看到几个通用函数的实际运用。

具体步骤

欧几里得公式定义了索引m和n。

创建数组m和数组n。

创建数组,用来存放索引。

计算勾股数的构成元素a、b和c。

使用欧几里得公式,计算勾股数的构成元素a、b和c。对数组进行求积、求差和求和运算时,需要用到outer函数。

找到符合要求的索引。

现在已经生成了分别包含勾股数的构成元素a、b和c的三个数组。需要进一步寻找符合要求的勾股数。使用NumPy的where函数,可以获得符合要求的勾股数的索引。

检查得到的结果。

用numpy.testing模块检查得到的结果。

本攻略的完整代码如下。

攻略小结

通用函数Ufuncs不是一般意义上的函数,实际上是具备函数功能的对象。正如我们在本例中所见,Ufuncs对象中有一个outer方法。NumPy中标准的Ufuncs很多是用C语言实现的,因此其运算速度比常规的Python代码要快。Ufuncs支持对元素的逐个处理和类型转换,这实际上意味着能减少循环语句的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值