#include<iostream>
using namespace std;
int maxnumber(int, int);
int minnumber(int, int);
int main() {
//直接计算的方法
int x, y, i, m, n;
printf("请输入两个数:");
scanf("%d%d", &x, &y);
m = x, n = y;
for (i = 1; i <= x; i++)
{
if (x%i == 0 && y%i == 0)
break;
}
for (i = x; i > 0; i--)
{
if (x%i == 0 && y%i == 0)
break;
}
printf("最大公约数是: %d\n", i);
printf("最小公倍数是: %d\n", m*n / i);
system("pause");
return 0;
}
//辗转相除法
int maxnumber(int a, int b) {
int t;
while (b != 0) {
t = a % b;
a = b;
b = t;
}
return a;
}
int minnumber(int a, int b) {
int t, m, n;
m = a; n = b;
while (b != 0) {
t = a % b;
a = b;
b = t;
}
return m * n / a;
}
int main(){
int a, b;
cin >> a >> b;
//定义两个函数的方法
cout << "最大公约数:" << maxnumber(a, b) << endl;
cout << "最小公倍数:" << minnumber(a, b) << endl;
return 0;
}
//辗转相减法
int maxnumber(int a, int b) {
int t;
while (a!= b) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
int minnumber(int a, int b) {
int t, m, n;
m = a; n = b;
while (a != b) {
if (a > b)
a = a - b;
else
b = b - a;
}
return m * n / a;
}
//穷举法
int maxnumber(int a,int b) {
int m, n,i;
m = a; n = b;
for (i = 1; i <= a; i++)
{
if (a%i == 0 && b%i == 0)
break;
}
for (i = a; i > 0; i--)
{
if (a%i == 0 && b%i == 0)
break;
}
return i;
}
int minnumber(int a, int b) {
int m, n,i;
m = a; n = b;
for (i = 1; i <= a; i++)
{
if (a%i == 0 && b%i == 0)
break;
}
for (i = a; i > 0; i--)
{
if (a%i == 0 && b%i == 0)
break;
}
return m * n / i;
}
ps
代码是很久之前的,非原创,但忘记是那里转的了,特此注明!!!!!