今天我們來分享一個c語言程序來實現求兩個數之間的最小公倍數與最大公約數,話不多說馬上開始:
#include<stdio.h>
int main()
{
int a, b,s;
scanf("%d %d", &a, &b);
while (b != 0)//b!=0保證下面的a%b有意義.
{
s = a % b;
a = b;
//把a的值換成與a%b的餘數,再把b的值與a交換並不斷除下去直到a%b==0,當b的值為零從而跳出循環,
b = s;
}
printf("輸入的兩個數的最大公約數為%d",a);
//上述循環結束後a的值就變成二者最大的公約數.
return 0;
}
下面是一次運行結果:
我輸入了12和8最後得到了二者之間的最大公約數4,是不違背事實的也就是說程序是非常正確的由此我們再進行一次運算:
這結果就不用我多說了.
求最大公倍數又多種方法,我們可以在求出最大公約數的前提下,進行進一步操作:
int main()
{
int a, b,s,k;
scanf("%d %d", &a, &b);
k = a * b;
while (b != 0)
{
s = a % b;
a = b;
b = s;
}
printf("輸入的兩個數的最大公約數為%d\n",a);
int v,n;
v = a, n = 1;
n= k / v;
printf("輸入的兩個數的最小公倍數為%d\n", n);
return 0;
}
(利用最小公倍數與最大公約數的關係,即最大公約數與最小公倍數的乘積等於兩個數的乘積)
下面為一次運行結果:
輸出的結果還是很正確的,15和12的最大公約數為3,最小公倍數為60,這是與事實相符合的.
下面是另一種方法求最大公倍數下面請看代碼:
#include<stdio.h>
int main()
{
int a, b,s;
scanf("%d %d", &a, &b);
if (a > b)
{
for (s = a; s<=b*a; s++)
//從較大的數開始往上增,注意到兩個正整數的最大公倍數不會大於它們的乘積故作此循環.
{
if (s % b == 0 && s % a == 0)
{
printf("輸入的兩個數的最小公倍數為%d", s);
break;//注意找到之後要跳出循環避免結果出錯.
}
}
}
if (a < b)//注釋同上.
{
for (s = b; s <= a * b; s++)
{
if (s % b == 0 && s % a == 0)
{
printf("輸入的兩個數的最小公倍數為%d", s);
break;
}
}
}
return 0;
}
下面我們來看幾次運行結果:
可以見得其與事實相符得...
通過轉化可以將其寫成一個函數.
好了今天得分享就到這了,因為臨近期末考試要複習備考了要不定期休刊了,不過,別擔心我們馬上就能再見的!
願你像他一樣自由♂,無論是哪個方面:
一起聽一下八爺的lemon,願我們都不要放棄對生活的希望,總會找到我們的光,
今でもあなたはわたしの光
時至今日 你仍是我的光芒!
最後說一次再見!