-
题目描述:
-
输入两个正整数,求其最大公约数。
-
输入:
-
测试数据有多组,每组输入两个正整数。
-
输出:
-
对于每组输入,请输出其最大公约数。
-
样例输入:
-
49 14
-
样例输出:
算法分析
采用辗转相除法。设有A,B两个数符合求取最大公约数,则 result = A % B,如果 result 不是最大公约数,则 A = B,B = result 循环求解,有最大公约数即结束程序。
结果分析
最大公约数求解中,递归方法比非递归方法效率高,递归方法编译时间为0.45-0.55 seconds;非递归方法编译时间为1.15-1.17 seconds
#include<stdio.h>
#include<stdlib.h>
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 <iostream>
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<<m<<endl;
}
return 0;
}
1万+



被折叠的 条评论
为什么被折叠?



