要求n个数的最大公约数,利用辗转相除法
先求出两个数的最大公约数k,再将k与下一个数求最大公约数
如:
输入:
2
12 16
输出:
4
输入:
3
128 64 32
输出:32
代码如下
#include<stdio.h>
int ss(int i,int j); //求两个数的最大公约数
int main()
{
int a[100],i,j,m,k;
printf("请输入要输入几个数:");
scanf("%d",&m);
printf("请输入几个数:");
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
k=ss(a[0],a[1]);
for(i=2;i<m;i++)
{
k=ss(k,a[i]);
}
printf("它们的最大公约数为:");
printf("%d",k);
return 0;
}
int ss(int i,int j)
{
int a;
if(i<j)
{
a=i;
i=j;
j=a;
}
while(i%j!=0)//辗转相除法求两个数的最大公约数
{
a=i%j; //a为余数
i=j; //除数给被除数
j=a; //余数给除数
}
return j; //返回最大公约数
}