/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者:申玉迪
* 完成日期:2013 年 11 月 12 日
* 版 本 号:v1.0
* 输入描述: 无
* 问题描述:输入两个数,输出它的最大公约数。
* 问题分析:利用一个循环,注重算法。
*算法:这段处理结束后,a 即是原a、b 的最大公约数
例:当a、b 分别为80 和36 时时,各变量在循环中如下变化
r a b
初值80 36
第一次循环(b≠0) 8 36 8
第二次循环(b≠0) 4 8 4
第三次循环(b≠0) 0 4 0
循环结束(b=0) 结果
*/
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
int c,r;
if(a<b)
{
r=b;
b=a;
a=r;
}
while(!b==0)
{
c=a%b;
a=b;
b=c;
}
return(a);
}
int main()
{
int a,b,g;
cout<<"请输入两个数"<<endl;
cin>>a>>b;
g=gcd(a,b);
cout<<"最大公约数为:"<<g;
return 0;
}

算法真的很重要