求最大公约数的c语言
C语言中求最大公约数的方法有三种:除以除法、比较减法、穷举法。
折腾分家。算法介绍:将两个数A和B相除,若余数C不等于0,则将B的值给A,C的值给B,直到C等于0。此时最大公约数为b。
更多的相位减法。算法介绍:用较小的数B减去较大的数A,如果差值C等于0,那么最大公约数就是B,如果不等于0,把B的值给A,把C的值给B,继续减法,直到差值等于0。
穷举法算法介绍:将A和B两个数中较小的值赋给I,A除以I,B除以I,如果两个数的余数同时为0,I就是它们的最大公约数。如果不等于0,i-1,继续将A除以I,B除以I,直到余数同时为0。
最大公约数:
最大公因数,又称最大公因数、最大公因数,是指两个或两个以上整数的除数中最大的一个。a和b的最大公约数是(a,b)。同样,a,b,c的最大公约数是(a,b,c),多个整数的最大公约数有相同的记号。
早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了一个高效的解决方案——相除法。除法所用的原理非常巧妙和简单。假设用f(x,y)表示x和y的最大公约数,k=x/y,b?=x%y,那么x=ky+?b,如果一个数能同时除x和y,那它一定同时除b和y。
而能同时被B和Y整除的数也会同时被X和Y整除,即X和Y的公约数与B和Y的公约数相同,其最大公约数相同,则f(x,y)=f(y,X % Y)(Y >;0),这样原问题就可以转化为求两个较小分数的最大公约数,直到其中一个为0,剩下的数就是两者的最大公约数。