利用更相减损术与辗转相除法来实现求最大公因数与最小公倍数的功能。
代码如下(博主入门不久,还请神犇们多指教):
#include <iostream>
#include <windows.h>
using namespace std;
int Number1,Number2,Number3,Number4,answer;
void change(); //自定义函数,用于交换两个数的值。
void GYS(); //自定义函数,用于计算最大公因数,原理是更相减损术。
inline int read(int& x){ //读入优化。
x=0;
register char ch =getchar();
while (!isdigit(ch)) ch = getchar();
do x = x*10+(ch- '0');while (isdigit(ch=getchar()));
}
void GBS();//自定义函数,用于计算最小公倍数,原理是辗转相除法。
int main(){
cout << "请输入您想要求最大公因数与最小公倍数的两个数" << endl;
cin >> Number1 >> Number2;
Number3=Number1;
Number4=Number2;//用于储存之前两个数字,应为之后会对该数字操作。
if (Number1<Number2) change();
GYS();//调用函数,求最大公因数。
cout << "他们的最大公因数为 "<< Number2 << endl;
GBS();//调用函数,求最小公倍数。
cout << "他们的最小公倍数为 "<< answer << endl;
Sleep(10000);
return 0;
}
void change(){
int c=Number1;
Number1=Number2;
Number2=c;
}
void GYS(){
int d;
for (int i;;i++){
if (Number1%Number2==0)break;
d=Number1%Number2;
Number1=Number2;
Number2=d;
}
}
void GBS(){
int a=Number3/Number2;
int b=Number4/Number2;
answer=a*b*Number2;
}