日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数论 —— 毕达哥拉斯三元组

發布時間:2025/3/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数论 —— 毕达哥拉斯三元组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【定義】

滿足??的??三元組稱為畢達哥拉斯三元組,當? 時,稱其為本原的。

畢達哥拉斯三元組,也稱為勾股數。

【性質】

由 x、y、z 構成的三元組 (x,y,z) ,其中 y 為偶數,那么由他們構成的本原的畢達哥拉斯三元組

等價于

存在互素的一奇一偶的正整數 m、n,且 m>n,有:,并且可以看出,本原的畢達哥拉斯三元組中,最大的數一定是奇數。

特別地,由??構成畢達哥拉斯三元組,將??即得

【實現】

求解 n 以內本原的畢達哥拉斯三元組個數

根據 ,只要枚舉一下 m、n(m,n<=sqrt(n)),然后將三元組乘以 i (保證 i*z 在范圍內),即可求出所有的畢達哥拉斯三元組。

int x[N],y[N],z[N]; int pythagoras(int n){int num=0;//數組游標int res=0;//本原三元組的個數int m=sqrt(n*1.0);for(int i=1;i<=m;i+=2){//從1開始,每次+2,保證為奇數for(int j=2;j<=m;j+=2){//從2開始,每次+2,保證為偶數a=max(i,j);//大的為mb=min(i,j);//小的為nif(gcd(i,j)!=1)//要求m、n互質continue;x[num]=a*a-b*b;y[num]=2*a*b;z[num]=a*a+b*b;num++;if( (a*a+b*b)<=n )//保證在范圍內res++;}}return res; }

【例題】

  • Fermat vs. Pythagoras(POJ-1305)(畢達哥拉斯三元組):點擊這里

總結

以上是生活随笔為你收集整理的数论 —— 毕达哥拉斯三元组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。