求n个数的最大公约数
求两个数的最大公约数的方法很多,如下面的递归法:
int gcd(int n, int m)
{
if (n<m)
{
n=m+n;
m=n-m;
n=n-m;
}
if (m==0) return n;
return gcd(m,n%m);
}
下面我使用数组写了个计算n个数的最大公约数的代码:
int max_common_divisor(int several[], int n)
{
int a=several[0];
int b=several[1];
int c=gcd(a,b);
int i;
for (i=2; i<n; i++)
{
c=gcd(c,several[i]);
}
return c;
}
写个主函数来测试下:
#include <stdio.h>
#include <stdlib.h>
int gcd(int a, int b);//求两个数的最大公约数
int max_common_divisor(int several[], int n);//求n个数的最大公约数
int main()
{
int a[4];
int x,y;
a[0]=147;
a[1]=210;
a[2]=315;
a[3]=84;
printf("最大公约数为:%d\n",max_common_divisor(a,4));
return 0;
}
测试结果如下:
作者:涵曦(www.hanxi.cc)
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
《 Skynet 游戏服务器开发实战》
-
学习地址:
-
优惠推荐码:
2CZ2UA5u
-
可以先免费试学前 2 章内容