求最大公约数
1、短除法
#include <iostream>
using namespace std;
int short_divsion(int m,int n)
{
int i,factor=1; //factor是求最大公约数
for(i=2;i<=m&&i<=n;i++)
{
while(m%i==0&&n%i==0)
{
factor=factor*i;
m=m/i; n=n/i;
}
}
return factor;
}
int main()
{
int a,b,r;
cout<<"请输入两个自然数:";
cin>>a>>b;
r=short_divsion(a,b);
cout<<a<<"和"<<b<<"的最大公约数是:"<<r<<endl;
return 0;
}
2、辗转相除法(欧几里得算法)
#include <iostream>
using namespace std;
int divsion(int m,int n)
{
int y; //m:被除数,n:除数,r:余数
y=m%n;
while(y!=0)
{
m=n;
n=y;
y=m%n;
}
return n;
}
int main()
{