首先我們得先搞清楚大公約數和最小公倍數的定義.
大公約數:兩個或多個整數共有約數中大的一個,例如,6和9的大公約數是3.
最小公倍數:兩個或多個整數公有的倍數叫做它們的公倍數,其中除0以外最小的一個公倍數就叫做這幾個整數的最小公倍數,例如,6和21的最小公倍數是42.
一.輾轉相除法.
有兩個整數a和b
1.a%b = temp; 若temp=0;此時b就是a和b的大公約數
2.若b≠0,則a=b;b=temp;繼續(xù)a%b的操作
3.例如.21和6,? 21%6余3; 6%3余0;此時3就是他們的大公約數?
4.得到大公約數后,用這兩個數的乘積除以他們的大公約數就得到了最小公倍數,例如,6和21,大公約數為3, (6*21)/3 = 42; 42就是他們的最小公倍數.話不多說上代碼
#define _CRT_SECURE_NO_WARNINGS 1
#include//輾轉相除法,乘積除以大公因數得到最小公倍數
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("請輸入兩個數:>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a,b);
printf("大公約數 = %d\n", a);
printf("最小公倍數 = %d\n",sum/m);
return 0;
}
運行結果
二.更象相減
1. 若a >b,則 a = a - b;
2. 若a< b,則 b = b - a;
3. 若 a = b,則 a(b)即為兩數的大公約數
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就是這兩個數的大公約數,同理,同樣的辦法可以得到兩個數的最小公倍數,上代碼
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("請輸入兩個數;>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公約數 = %d\n", m);
printf("最小公倍數 = %d\n", sum/m);
return 0;
}
運行結果
三.硬算(窮舉).
有兩個整數a和b:
從1開始,讓a和b同時除以,直到某個數同時滿足被a和b整除,此時這個被整除的數字就是大公約數,同樣道理,可以獲得最小公約數.上代碼
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("請輸入兩個數;>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公約數 = %d\n", m);
printf("最小公倍數 = %d\n", sum/m);
return 0;
}
運行結果
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前名稱:幾種求最小公約數和最大公倍數的思考(C語言實現(xiàn))-創(chuàng)新互聯(lián)
鏈接地址:http://chinadenli.net/article8/goiop.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網站設計公司、關鍵詞優(yōu)化、網站排名、網站維護、自適應網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)