正文

练习:求两个正整数m和n的最大公约数(三种方法)2006-06-19 02:33:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bclz/15979.html

分享到:

/*
    求两个正整数m和n的最大公约数可用如下gcd(m,n)公式表示
               m           n=0
    gcd(m,n)= 
               gcd(n,m%n)  n>0
    */
    
#include <stack>    
using namespace std;

typedef stack<int>  ints;
//递归实现 
int gcd(int m,int n)
{
    int  res;
    if(n==0)
        res=m;
    else
        res=gcd(n,m%n);
    return res;
}

//非递归实现 
int gcd2(int m,int n)
{
    int res;
    while(n!=0)
    {
        int t;
        t=m; 
        m=n;
        n=t%n;
    }
    res=m;
    return res;    
}

//用栈实现非递归 
int gcd3(int m,int n)
{
    ints S;
    int res;
    while(n!=0)
    {
        S.push(n);
        S.push(m%n);
        n=S.top();
        S.pop();
        m=S.top();
        S.pop();
    }
    return m;
}

阅读(6185) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册