数学小知识:勾股数

对于勾股数想必大家一定很熟悉,小学开始就知道直角三角形的边长关系满足勾股定理.不过,关于勾股数的更多性质,却很少会去探究.那么如何快速地产生勾股数三元组呢?
如果a,b,c三者两两互质,那么称为素勾股数.由于非素勾股数都可以转化为素勾股数(除掉公因子后,即互质),所以,这里只研究素勾股素.

一.性质分析

1.如果a,b互质,那么a和b当中有且仅有一个奇数

证明过程如下:

(注意:上述所说任意完全平方整数实为完全平方偶数)

2.找出勾股数的方法


这里找出的u,v是正整数且v>u.使用与1同样的方法可以证明u,v互质时,二者奇偶性不同.
这样我们编程时,用这个方法枚举,那就比不利用这样的性质要快得多
代码如下:

?
001
002
003
004
005
006
007
008
009
010
for ( int u = 1; u <= sqrt (n);++u)
    for ( int v = u+1; v <= sqrt (n); v+=2)
    {
        if (gcd(u,v)==1)
        {
             a = 2*u*v;
             b = v*v-u*u;
             c = v*v+u*u;
        }
    }
  • 上面的循环v>u,所以v总是从u+1开始
  • v=u+1同时每次自增2,保证了二者奇偶性一直不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值