我們都知道,分數一般是可以用“分子/分母”的形式來表示的,當然也可以用小數的形式來表示。
今天這道題目呢,是收錄在基礎編程題目集當中的第二十四題,它的要求是用戶輸入一個分數,然後将它約分為最簡分式。最簡分式指的就是分子和分母不具有可以約分的成分了。
比方說6/12可以約分為1/2,而當分子大于分母時,不需要表達為整數又分數的形式,分子和分母相同時,仍然用1/1的形式來表達。
1、要輸入一個分數,分子和分母之間還有斜杠/分隔,在C語言當中呢,一般是用scanf函數來處理這個斜杠/的,這與我們之前講的差不多。
2、而至于如何約分呢,這就是這道題目最為關鍵的地方了,我們都知道給定兩個數後,比方說給了題目中的例子66和120,它們的最大公約數是多少,應該是6才對,而6是如何得到的呢,我們都聽說過歐幾裡得算法,也知道這個算法是用來求最大公約數的。
不過呢,要是不知道歐幾裡得算法也沒事,完全可以用窮舉法做出這道題目。
因為要求最大公約數,如果我們從1開始數起的話,那隻能得到最小公約數也就是1,但如果從120開始數起的話,隻要滿足小于120中的某個數(且是最大數),能夠同時被66和120整除,那很顯然,隻有6才能滿足這個條件,所以就能得到最大公約數為6。
這是分子小于分母的情況,那如果是分母小于分子的情況呢,也是同理的。
代碼實現
//約分最簡公式
#include <stdio.h>
int main() {
int a;
int b;
scanf("%d/%d",&a,&b);
if(a>b){
for(int i = a;i>0;i--){
if(a%i==0&&b%i==0){
printf("%d/%d",a/i,b/i);
break;
}
}
}
if(a<=b){
for(int i=b;i>0;i--){
if(a%i==0&&b%i==0){
printf("%d/%d",a/i,b/i);
break;
}
}
}
}
總的來說,這道題目相較于之前的題目而言,難度有所下降,不過這裡我用到的求最大公約數的方法是用一個窮舉法,後面我會找時間來與大家探讨一下歐幾裡得算法的使用。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!