【ICPC模板】勾股数组

本源勾股数组

取n < m且满足(n & 1) ^ (m & 1)为1(这里的^为异或,此表达式说明二者奇偶不同),同时gcd(n, m) = 1(即二者互素),则可得到满足sqr(a) + sqr(b) = sqr(c)(其中sqr()表示平方)的勾股数组:

   a = sqr(m) – sqr(n)

   b = 2nm

   c = sqr(m) + sqr(n)

如果按照顺序枚举满足上述条件(奇偶不同的互素n < m二元组(n, m)),就可以得到所有的本源勾股数组,同时它们的整数倍也是勾股数组。这个方法可以取得所有的勾股数组。

 

 

相关性质

gcd(a, b) = gcd(a, c) = gcd(b, c) = gcd(a, b, c)

 

对于任何大于1的正整数x,sqr(x) + 1, sqr(x) – 1以及2x一定构成勾股数组。

 

 

寻找最小数为奇数的勾股数组的快速方法

任取大于3的奇数a,平方后,除以2取结果向下取整得到b,向上取整得到c,这三个数a, b, c必然构成勾股数组,且保证最小数a为奇数,但是不一定是本源勾股数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值