1. 程式人生 > >C語言實現求最大公約數與最小公倍數

C語言實現求最大公約數與最小公倍數

最大公約數 = 兩數之積 / 最小公倍數,所以只要求出一個即可。

輾轉相除法:(求最大公約數)
有兩整數a和b(a>b), a%b得餘數c,若c=0,則b即為兩數的最大公約數
若c≠0,則a = b,b = c,繼續求餘數。

最小公倍數
定義一個變數從1開始,每增1對這幾個數進行求餘運算,直到這幾個數的
餘數為0,此時該數即為這幾個數的最小公倍數。
最小公倍數總是大於或等於這幾個數中的最大數,小於或等於這幾個數的乘積。
利用這一性質也可以反過來程式設計,即從這幾個數的乘積減1開始自減,進行求餘預算即可。

方法一:

void fun(int m, int n)
{
	int yueshu =
m%n; int x = m*n; //記錄m*n為後面求公倍數 if(yueshu == 0) printf("%d %d\n",n,x/n); else { while(yueshu != 0) { m = n; n = yueshu; yueshu = m%n; } printf("%-5d %-5d\n",n,x/n); } }

方法二:

void fun(int a,int b)
{
	int i, min = a*b, max = 1;
    for(i = 2; i <= a; i++)
    {
        if
(a%i == 0 && b%i == 0) max = i; } for(i = a*b-1; i >= a; i--) { if(i%a == 0 && i%b == 0) min = i; } printf("%-5d %-5d\n",max,min); }