zoukankan      html  css  js  c++  java
  • 数学小知识:勾股数

    对于勾股数想必大家一定很熟悉,小学开始就知道直角三角形的边长关系满足勾股定理.不过,关于勾股数的更多性质,却很少会去探究.那么如何快速地产生勾股数三元组呢?
    如果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,保证了二者奇偶性一直不同
  • 相关阅读:
    标定相关-一些资源
    论文基础-5几何知识
    论文基础-3微积分
    h5页面 判断网页是否由微信或qq内置浏览器打开
    Html5 页面后退并刷新
    h5 页面下拉刷新
    绑定点击事件 传参
    公众号做分享功能
    清微信缓存
    手机端适配
  • 原文地址:https://www.cnblogs.com/shihao/p/2325593.html
Copyright © 2011-2022 走看看