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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c语言,c++求最大公因数与最小公倍数方法集合

發布時間:2025/3/19 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言,c++求最大公因数与最小公倍数方法集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


首先要了解,求兩個數的最小公倍數只需用兩個數的乘積除以最大公因數就可以得到了,所以我們的目標就是找最大公因數

c語言

第一種方法用輾轉相除法:
輾轉相除法, 又名歐幾里德算法(Euclidean algorithm),是求兩個正整數之最大公約數的算法。它是已知最古老的算法, 其可追溯至公元前300年前。

它的具體做法是:用較大數除以較小數,再用出現的余數(第一余數)去除除數,再用出現的余數(第二余數)去除第一余數,如此反復,直到最后余數是0為止。如果是求兩個數的最大公約數,那么最后的除數就是這兩個數的最大公約數。


代碼實現:

#include <stdio.h> #include <math.h>int main() {int a, b;scanf("%d %d", &a, &b);int flag = 0, mul; //用來存a原來的值flag = a;mul = a * b;a = (a > b) ? a : b;b = (b < flag) ? b : flag; //令a為較大的數int count;//記下上個除法的除數while (b != 0) {count = b;b = a % b;//求余數a = count;}int key = count; //最大公因數為最后一個除式的除數int king = mul / key; //最小公倍數printf("%d %d", key, king);return 0; }


2.最大公因數肯定是比兩個數中最小的數還小,所以我們從最小的數開始找,直到找到一個數(兩個數都能對其整數的數)就可以了

#include <stdio.h> #include <math.h>int main() {int a, b;scanf("%d %d", &a, &b);int flag = 0, mul; //用來存a原來的值flag = a;mul = a * b;a = (a > b) ? a : b;b = (b < flag) ? b : flag; //令a為較大的數int i;for ( i = b; i >= 1; i--)if (a % i == 0 && b % i == 0)break;//找到后要馬上停止循環printf("%d %d", i, mul / i);return 0; }

c++

c++中有專門找最大公因數的函數,使用即可

#include <iostream> #include <algorithm>//必須包含這個頭文件 using namespace std;int main() {int a, b;while (cin >> a >> b) {int c, t;c = __gcd(a, b);//求最大公因數的函數,注意是量個下劃線__;t = a * b / c;cout << c << ' ' << t << endl;}return 0; }

希望對大家有幫助呀

總結

以上是生活随笔為你收集整理的c语言,c++求最大公因数与最小公倍数方法集合的全部內容,希望文章能夠幫你解決所遇到的問題。

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