C語言實現求最大公約數與最小公倍數
阿新 • • 發佈:2018-12-23
最大公約數 = 兩數之積 / 最小公倍數,所以只要求出一個即可。
輾轉相除法:(求最大公約數)
有兩整數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);
}