输入一组数字的最大公约数(不超过20个)
输入:22 33 44 55 66 1111(空格隔开,回车输出结果)
输出:11
注意main函数中输入的方法,用一个整型变量和一个字符变量控制输入,用scanf
#include<iostream>
#include<algorithm>
using namespace std;
int gcd(int a, int b)
{
if(a < b)
return gcd(b, a);
if(b == 0)
return a;
else
return gcd(a-b, b);
}
int main()
{
int nRes, a[20], count=0;
int data;
char ch='1';
memset(a, 0, sizeof(a));
while(ch!='\n')
{
scanf("%d%c",&data,&ch);
a[count++]=data;
}
if(count == 1)
nRes=a[0];
else if(count >= 20)
return -1;
else
{
nRes=gcd(a[0], a[1]);
for(int i=2; i<count; i++)
nRes=gcd(nRes, a[i]);
}
cout<<nRes<<endl;
return 0;
}