求若干数的最大公约数可以利用将其转化为求两个数的最大公约数,将求得的最大公约数再与第三个数一起求最大公约数,直到最后一个数结束。
下面介绍求俩个数的最大公约数的方法,具体求多个数的的程序我没有具体去写,思路就是这样。
求最大公约数算法:
(1)辗转相除法
两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数,结束
③ 若c≠0,则a=b,b=c,再回去执行①
(2)相减法
两整数a和b:
① 若a>b,则a=a-b
② 若a<b,则b=b-a
③ 若a=b,则a(或b)即为两数的最大公约数,结束
④ 若a≠b,则再回去执行①
(3)穷举法:
① i= a b中的小数
② 若a,b能同时被i整除,则i即为最大公约数,结束
③ i--,再回去执行②
具体代码如下:
(1)辗转相除法
int getCommonisor(int num1,int num2)
{
int r;
if(num1<num2)
{
r=num1;
num1=num2;
num2=r;
}
r=num1%num2;
while(r!=0)
{
num1=num2;
num2=r;
r=num1%num2;
}
return num2;
}
(2)相减法
int getCommonisor(int num1,int num2)
{
while(num1!=num2)
{
if(num1<num2)
{
num2-=num1;
}else
{
num1-=num2;
}
}
return num2;
}
(3)穷举法:
int getCommonisor(int num1,int num2)
{
int min=num1>num2?num2:num1;
while(num1%min!=0||num2%min!=0)
{
min--;
}
return min;
}