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,再進行下一次的相除,以此循環(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;
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:
相關(guān)文章
C語言實現(xiàn)簡易學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12
C語言調(diào)用SQLite數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)增刪改查
SQLite是一種輕量級的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是一個開源的、零配置的、服務(wù)器端的、自包含的、零管理的、事務(wù)性的SQL數(shù)據(jù)庫引擎,本文主要介紹了如何調(diào)用SQLite數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)增刪改查,需要的可以參考一下2023-08-08
C++數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)
紅黑樹在表意上就是一棵每個節(jié)點帶有顏色的二叉搜索樹,并通過對節(jié)點顏色的控制,使該二叉搜索樹達到盡量平衡的狀態(tài)。本文主要為大家介紹了C++中紅黑樹的原理及實現(xiàn),需要的可以參考一下2022-08-08

