以前写的,直接复制过来。
求两个整数的最大公约数和最小公倍数。
算法思想:最小公倍数 = 两个整数之积 / 最大公约数
求最大公约数的算法:假设 m > n (1)若 m / n 余数为 0 (m % n == 0),则n 为最大公约数。(2)若 m % n != 0 ,令 r = m % n; 等式可以写成
m = n * x + r ,在向下 可以求 n % r 如果余数为0, r 就是m 和 n 的最大公约数,如果余数不为0,继续向下寻求被除数和余数 求模 余数为 0 的一组。最后的被除数就是 m 和 n 的最大公约数 。
m = n * x + r = r *(( x * x) + 1) +p = ............(x 为商)
(算法是自己想的,如有错误请指正)
//求两个整数的最大公约数和最小公倍数
#include<iostream>
using namespace std;
int main()
{
int nm, m, n, r,t;
cout<<"input two integers"<<endl;
cin>>m>>n;
nm = n * m;
if(m < n)
{
t = m;
m = n;
n = t;
}
r = m % n;
while(r != 0)
{
m = n;
n = r;
r = m % n;
}
cout<<"最大公约数为:"<<n<<"/n"
<<"最小公倍数为:"<<nm / n<<endl;
system("pause");
return 0;
}