新聞中心
首先我們得先搞清楚大公約數(shù)和最小公倍數(shù)的定義.
大公約數(shù):兩個或多個整數(shù)共有約數(shù)中大的一個,例如,6和9的大公約數(shù)是3.
最小公倍數(shù):兩個或多個整數(shù)公有的倍數(shù)叫做它們的公倍數(shù),其中除0以外最小的一個公倍數(shù)就叫做這幾個整數(shù)的最小公倍數(shù),例如,6和21的最小公倍數(shù)是42.
一.輾轉(zhuǎn)相除法.
有兩個整數(shù)a和b
1.a%b = temp; 若temp=0;此時b就是a和b的大公約數(shù)
2.若b≠0,則a=b;b=temp;繼續(xù)a%b的操作
3.例如.21和6,? 21%6余3; 6%3余0;此時3就是他們的大公約數(shù)?
4.得到大公約數(shù)后,用這兩個數(shù)的乘積除以他們的大公約數(shù)就得到了最小公倍數(shù),例如,6和21,大公約數(shù)為3, (6*21)/3 = 42; 42就是他們的最小公倍數(shù).話不多說上代碼
#define _CRT_SECURE_NO_WARNINGS 1
#include//輾轉(zhuǎn)相除法,乘積除以大公因數(shù)得到最小公倍數(shù)
int fib(int a, int b)
{
while (a*b!=0)
{
int tmp = a % b;
a = b;
b = tmp;
}
//printf("%d %d\n", a, b);
return a;
}
int main()
{
int a = 0;
int b = 0;
printf("請輸入兩個數(shù):>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a,b);
printf("大公約數(shù) = %d\n", a);
printf("最小公倍數(shù) = %d\n",sum/m);
return 0;
}
運(yùn)行結(jié)果
二.更象相減
1. 若a >b,則 a = a - b;
2. 若a< b,則 b = b - a;
3. 若 a = b,則 a(b)即為兩數(shù)的大公約數(shù)
4.若 a ≠ b,則繼續(xù)執(zhí)行第一步操作。
5.例如21和6.? 21-6=15(15>6); 15-6=9(9>6); 9-6=3(3<6); 6-3=3(3=3)//? 3就是這兩個數(shù)的大公約數(shù),同理,同樣的辦法可以得到兩個數(shù)的最小公倍數(shù),上代碼
int fib(int a, int b)
{
while (a != b)
{
if (a >b)
{
a = a - b;
}
else
{
b = b - a;
}
}
return a;
}
int main()
{
int a = 0;
int b = 0;
printf("請輸入兩個數(shù);>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公約數(shù) = %d\n", m);
printf("最小公倍數(shù) = %d\n", sum/m);
return 0;
}
運(yùn)行結(jié)果
三.硬算(窮舉).
有兩個整數(shù)a和b:
從1開始,讓a和b同時除以,直到某個數(shù)同時滿足被a和b整除,此時這個被整除的數(shù)字就是大公約數(shù),同樣道理,可以獲得最小公約數(shù).上代碼
int fib(int a, int b)
{
int n = 0;
for (int i = 1; i< b; i++)//i小于a和b任意一個都行
{
if ((a % i == 0) && (b % i == 0))
{
n = i;
}
}
return n;
}
int main()
{
int a = 0;
int b = 0;
printf("請輸入兩個數(shù);>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公約數(shù) = %d\n", m);
printf("最小公倍數(shù) = %d\n", sum/m);
return 0;
}
運(yùn)行結(jié)果
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:幾種求最小公約數(shù)和最大公倍數(shù)的思考(C語言實(shí)現(xiàn))-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://www.ef60e0e.cn/article/goiop.html