最大公约数(递归与非递归)

时间限制:1 秒

内存限制:32 兆

特殊判题:


题目描述:

输入两个正整数,求其最大公约数。

输入:

测试数据有多组,每组输入两个正整数。

输出:

对于每组输入,请输出其最大公约数。

样例输入:
49 14
样例输出:
 
    

算法分析

采用辗转相除法。设有A,B两个数符合求取最大公约数,则 result = A % B,如果 result 不是最大公约数,则 A = B,B = result 循环求解,有最大公约数即结束程序。

结果分析

最大公约数求解中,递归方法比非递归方法效率高,递归方法编译时间为0.45-0.55 seconds;非递归方法编译时间为1.15-1.17 seconds

#include
#include

int gcd(int a,int b){
     if(b==0)
        return a;
     else
        return gcd(b,a%b);
     }
int main(){
    int a,b;
    while(~scanf("%d%d",&a,&b))
    {
      printf("%d\n",gcd(a,b));
             
    }
    return 0;
    }


/*
*最大公约数计算(非递归方法) 
*/
#include 
using namespace std;
int main()
{
	int  m, n, temp ;
	while(cin>>m>>n)
	{
		while(n != 0)
		{
			m = m%n;
			temp = n;
			n = m;
			m = temp;
		}
		cout<







你可能感兴趣的:(C,/,C++)