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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

两个数的最大公因数

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个数的最大公因数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.問題描述
給出兩個正整數,求他們的最大公約數
2.問題分析
算法1:連續整數檢驗法(窮舉法)
d=min{m,n}
如果m與n能同時整除d,則d是兩個數的最大公約數。
否則,若任一條件不成立,d=d-1,直到能同時整除。 eg:12與9,將9賦給d,12不能整除9,則d-1為8. 12與9均不能整除8,d=d-1. 直到d=3,12與9都能整除3,則3為12與9的最大公因數。 #include<stdio.h> int f(int m,int n){int d;if(m<n)d=m;else d=n;while(d>0){if(m%d==0&&n%d==0)return d;d--;}}int main() {int m,n;printf("請輸入兩個正整數:"); scanf("%d %d",&m,&n);printf("這兩個數的最大公約數為:%d ",f(m,n));}


算法2:歐幾里得算法
1.d=m%n;
2.循環直到r=0; d=m%n;
?? m=n;
?? n=d; 3.返回m. eg:d為m與n的模。 d=12%9=3; m=n=9; n=d=3; 繼續循環; d=9%3=0; m=n=3; n=d=0; 跳出循環。返回m值,為最大公因數。 #include<stdio.h> int f(int m,int n) {int d;while(d!=0){d=m%n;m=n;n=d;}return m; } int main() {int m,n;printf("請輸入兩個正整數:"); scanf("%d %d",&m,&n);printf("這兩個數的最大公約數為:%d ",f(m,n));}



算法3:連續相減法 輸入兩個正整數a,b 如果a>b,a=a-b; 否則b=b-a; 直到a=b輸出a或者b; eg:a=12,b=9,a=12-9=3; b>a,b=b-a=9-3=6; b=b-a=6-3=3; b=a,跳出循環,所以a或b為最大公因數。 #include<stdio.h> #include<math.h> int f(int m,int n) {m=abs(m); //abs絕對值函數,需要導入<math.h>包 n=abs(n); //用絕對值防止萬一出現負數的情況 while(m!=n){if(m>n)m=m-n;else n=n-m; } return m;} int main() {int m,n;printf("請輸入兩個正整數:"); scanf("%d %d",&m,&n);printf("這兩個數的最大公約數為:%d ",f(m,n));}


???

轉載于:https://www.cnblogs.com/laurarararararara/p/10886455.html

總結

以上是生活随笔為你收集整理的两个数的最大公因数的全部內容,希望文章能夠幫你解決所遇到的問題。

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