编写函数gcd,计算2个非负整数的最大公约数,可以用辗转相除法,也可以用递归等其他方法。
函数接口定义:
int gcd(int m,int n);
其中 m 和 n 都是用户传入的参数,值都为非负整数。函数须返回 m 和 n 的最大公约数。运行程序3次,输入不同数据,记录运行结果。
裁判测试程序样例:
#include <iostream>
using namespace std;
int gcd(int m,int n);
int main()
{
int m,n;
int counter=0;
while(counter<3)
{
cout<<"Enter two number:";
cin>>m>>n;
int divisor=gcd(m,n);
cout<<"Common divisor of "<<m<<" and "<<n<<" is: "<<divisor<<endl;
counter++;
}
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
Enter two number:15 25
输出样例:
5
int gcd(int m,int n)
{
int i,t;
if(m<n){
t=n;
n=m;
m=t;}
if(m%n==0)
return n;
else
{
for(i=1;;i++)
{
t=m%n;
m=n;
n=t;
if(n==0)
break;
}
return m;
}
}
递归方法
int gcd(int m,int n)
{
if(m<n){int t=m;m=n;n=t;}
if(m%n==0) return n;
else {
int s=n;
n=m%n;
m=s;
gcd(m,n);
}
}