怎樣在C語言中把不簡分數化成最簡分數

2021-05-22 18:52:47 字數 2254 閱讀 5174

1樓:匿名使用者

使用輾bai轉相除法求出最大公因子,然du後上下同時除以之zhi。 下面給出輾轉

dao相除法求最大公因內

子的**:

int foo(int a, int b)int c = a % b;

if (c == 0)

return foo(b, c);}

怎樣用c語言寫一個將小數轉化成最簡分數的演算法

2樓:止語

演算法很簡單,程式中已經說明。重要的是系統對浮點數是有修正的,導致結果出現問題。

如何解決,詳見程式。

//#include "stdafx.h" //vs 預設使用

#include

#include

#include

#pragma warning(disable: 4996)

//為了最大限度支援(目前)小數,整數定義成:__int64

//支援32位:以下分別為 int(__int32) 1e8

#define zhengshu __int64

#define xiaoshudianzuoyi 1e15 //double 最多隻能確精確到15位有效數字

#define xiuzheng 1e-16 //用於修正浮點數計算誤差

int _tmain(int argc, _tchar* argv)

else

zs = (zhengshu)xs; //支援假分數

//計算整數部分的有效數位數

k = 1;

while (zs / k > 0)

k *= 10;

xs -= (double)zs;

fm = xiaoshudianzuoyi / k; //分母

xs = (double)((zhengshu)((xs + xiuzheng * k) * fm)) / fm; //修正浮點數計算誤差

xs += xiuzheng; //修正浮點數計算誤差

fz = (zhengshu)(xs * fm); //分子

for (;;) //這樣迴圈,是因為 c/c++ 中,for 迴圈效率最高

else

}//實現第二步:約分。以下看起來有點麻煩,目的是為了減少演算法的時間複雜的

while ((fz % 2 == 0) && (fm % 2 == 0))

k = 3;

for (;;)

k += 2;

if (k > (zhengshu)sqrt(fz))

break;

}//將整數部分加上,形成假分數。如果原數為不為0整數,則化成分母為 1 的假分數

//如果原數為 0,則化成分子為 0,分母為 1。

if (fz == 0)

else

//結束

//顯示一下結果

printf("%lf = %lld/%lld\n", fh * (zs + xs), fz, fm);

//printf("%lf = %ld/%ld\n", fh * (zs + xs), fz, fm); //32位

system("pause"); //防止視窗一閃而退

return 0;}

3樓:

沒有精確的轉換方法,只能模糊轉,你要多模糊呢,分子在什麼範圍內?

怎麼把小數化成最簡分數

4樓:葉子郭郭郭

小數如何化成分數,掌握方法就會非常簡單。

5樓:不想取名字啊西

1.看小數點後面有幾位數,然後去掉小數點,將整個數當做分子,如果小數位數是2位就把100當分母,是1位把10當分母,三位把1000當分母,以此類推。題中4.

4=44/10;3.375=3375/1000。

2.轉化後再看看分子分母之間是否有公因數,如果有就進行約分,直到無法繼續約分。44/10分子分母各除以5得到22/5;3375/1000分子分母同除以125得到27/8。

6樓:匿名使用者

1、首先看小數點後面有幾位數

,如果是2位就除以100,是1位除以10,三位數除以1000以此類推。2、然後分子和分母約分到不能再約分為止。3、拿0.

12做列子,變成12/100,上下可以用4約分,變成3/25.

7樓:買儼陀悌

1/812/5

37/100

32/25

怎麼把最簡分數化成小數,怎麼把最簡分數化成小數

純迴圈小數 一個迴圈節有幾個數,分母就有幾個9,分子則為一個迴圈節上的數 例.0.33333.3 9,0.347347347.347 999 混迴圈小版數,迴圈節權有幾個數,分母就有幾個9,不迴圈的有幾個數,分母再添幾個0,分子是從不迴圈到一個迴圈節數減去不迴圈的數 例.0.32222.32 3 9...

把下面的分數化成最簡分數,是假分數的化成整數或帶分數

2418 43 113 15 35 37 1751 13 3621 12 7 157 2228 1114.把下面的分數化成最簡分數,是假分數的再化成帶分數或整數。36分之27 4分之3 16分之48 3 60分之25 12分之5 14分之240 17又7分之1 祝你學習進步,有不明白的可以追問 謝謝...

怎麼找分數中哪些是最簡分數,怎麼把分數化成最簡分數

一 首先要先認識什麼是最簡分數 分子 分母只有公因數1的分數叫做最簡分數或者說分子和分母是互質數的分數,叫做最簡分數,又稱既約分數。如 2 3,8 9,3 8等等。最簡分數又叫既約分數,既約分數可理解成已經約分過的分數,也就是分子和分母是互質數的分數.假分數雖然是大於1或等於1的分數,但如果符合以上...