C++ 實現(xiàn)求最大公約數(shù)和最小公倍數(shù)
更新時間:2021年10月03日 23:42:24 投稿:lqh
這篇文章主要介紹了c++ 實現(xiàn)求最大公約數(shù)和最小公倍數(shù)的相關(guān)資料,需要的朋友可以參考下
C++ 實現(xiàn)求最大公約數(shù)和最小公倍數(shù)
最大公約數(shù)
輾轉(zhuǎn)相除法:
int maxDivisor(int a, int b) { int c = b; while (a%b != 0) { c = a%b; a = b; b = c; } return c; }
輾轉(zhuǎn)相減法:
int maxDivisor(int a, int b) { while (a != b) { if (a>b) a = a - b; else b = b - a; } return a; }
輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)
#include<iostream> using namespace std; int main() { int m,n,t; cout<<"請輸入兩個正整數(shù):"<<endl; cin>>m>>n; int x=m;//將最初的m和n的值分別用x和y保存起來,后面計算最小公倍數(shù)時需要用到 int y=n; if(m<n){ t=m;//t為中間變量,來實現(xiàn)m與n的值的相互交換,保證被除數(shù)大于除數(shù) m=n; n=t; } int r=m%n; while(r){//用n來除以m,直到m被n整除,循環(huán)終止,此時r的值為0,在c++中只有0才為假,任何非0的值都判斷為真 m=n;//輾轉(zhuǎn)相除法的核心就是用較大的數(shù)m去除較小的數(shù)n,如果剛好能整除,則m與n的最大公約數(shù)為n,如果不能整除,則將n的值賦給m,余數(shù)r賦給n,再進(jìn)行下一次的相除,以此循環(huán),直到整除為止 n=r; r=m%n; } cout<<"最大公約數(shù)為:"<<n<<endl; cout<<"最小公倍數(shù)為:"<<x*y/n<<endl;//兩個數(shù)的最小公倍數(shù)等于兩個數(shù)的乘積除最小除他們的最大公約數(shù) return 0; }
或
#include<iostream> using namespace std; int gys(int x,int y) { return y? gys(y,x%y):x; } int main() { int x,y; cin>>x>>y; cout<<"最大公約數(shù)是:"; cout<<gys(x,y)<<endl; cout<<"最小公倍數(shù)是:"; cout<<(x*y)/gys(x,y); return 0; }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章: