数学小知识:勾股数
2012-01-18 14:56
260 查看
对于勾股数想必大家一定很熟悉,小学开始就知道直角三角形的边长关系满足勾股定理.不过,关于勾股数的更多性质,却很少会去探究.那么如何快速地产生勾股数三元组呢?
如果a,b,c三者两两互质,那么称为素勾股数.由于非素勾股数都可以转化为素勾股数(除掉公因子后,即互质),所以,这里只研究素勾股素.
(注意:上述所说任意完全平方整数实为完全平方偶数)
这里找出的u,v是正整数且v>u.使用与1同样的方法可以证明u,v互质时,二者奇偶性不同.
这样我们编程时,用这个方法枚举,那就比不利用这样的性质要快得多
代码如下:
?
如果a,b,c三者两两互质,那么称为素勾股数.由于非素勾股数都可以转化为素勾股数(除掉公因子后,即互质),所以,这里只研究素勾股素.
一.性质分析
1.如果a,b互质,那么a和b当中有且仅有一个奇数
证明过程如下:(注意:上述所说任意完全平方整数实为完全平方偶数)
2.找出勾股数的方法
这里找出的u,v是正整数且v>u.使用与1同样的方法可以证明u,v互质时,二者奇偶性不同.
这样我们编程时,用这个方法枚举,那就比不利用这样的性质要快得多
代码如下:
?
001002003004005006007008009010 | 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,保证了二者奇偶性一直不同
v=u+1同时每次自增2,保证了二者奇偶性一直不同
相关文章推荐
- Directx11学习笔记【五】 基本的数学知识----向量篇
- 机器学习中的数学知识——概率论
- 压缩感知中的数学知识:线性方程组的解
- word2vec 中的数学原理背景知识详解(1)
- 数学知识体系
- 3D数学 ---- 矩阵的更多知识(2)
- 蓝桥杯C语言培训4 数学知识的运用 例题2 天平称重
- 3D数学 ---- 矩阵的更多知识(3)
- Buffon投针实验 · 数学的直观理解 · 基础知识很重要
- 数学知识对写程序有用吗?
- 计算机图形学 所需要的数学知识--<<计算机图形学(第三版)>>读书笔记
- [jbb0523整理]压缩感知中的数学知识:凸优化
- word2vec 中的数学原理详解(三)背景知识
- php基础知识【函数】(9)数学和对象类函数
- 数据结构与算法分析-数学知识复习
- 移动火柴(数学知识)
- 学习笔记---高等数学前置知识---约分、通分
- 编程思想才是精髓の如何利用数学知识编程小例
- 数学小知识
- 总结人工智能需要的数学知识