今天強者我同事跑來問我程式裡面分數運算的約分該如何做?這一問,難倒我了,寫程式那麼久從來就沒做過分數運算,通常就是直接浮點數給他下去啦,後來想想浮點數運算越做偏差應該會越大齁?所以約分應該也是有道理的。

上網查了一下,原來分數運算要用最大公因數演算法(Greatest Common Divisor, GCD)來做阿~小學學的東西已經還給老師了,老師我對不起你....碩士唸畢業還不如一個小學生Orz

最大公因數求解可用直因數分解或者輾轉相除法來做,下面這個範例是網路上找到的輾轉相除法code:

int GCD(int A,int B)
{
//宣告整數R用來存放餘數
int R;
//除數不能等於0,如果除數B等於0,返回-1
if (B==0)
  return -1;
    //當A除以B有餘數時則持續作輾轉相除法
    while ( (R = A % B) != 0 )
    {
        //除完一次後,除數被除數互換
        A = B;
        B = R;
     }
//回傳最大公因數B
return B;
}


小小的一個簡單的演算法,很容易的就看出來我平常程式寫的不夠多,這間辦公室裡面除了國防役之外,很多人都是私立大學甚至是職校畢業的學生,雖然他們沒有國立大學碩士的光環,但是他們還是很競競業業的不斷學習,就如問這個問題的同事是某私立大學資管系畢業,資管系畢業的他說他不會寫程式(這個很正常,國立大學資管系畢業的也沒幾個會寫),最近才開始學寫C++,但是每次看到他拿著一疊原文資料在K,星期六來公司加班也遇到他,初學者的第一個問題就考倒我了@@,真的不由自主的對他肅然起敬,也不只有他,像是即將成為交大新鮮人的小王子學長,本組扛霸子,在忙碌的公務之餘,還能抽空唸書考到交大,整個的就是強到爆炸

反過來看自己,國立研究所畢業沒什麼專長,還好在這邊工作的大家人都很好,有問題都會很熱心的幫忙解決(熱心到我都不好意思去麻煩人家了),跟S.Y.的前公司來比反差真大,自己也要多努力念書啦,不然就這樣一直拖累大家也不好,年輕的辦公室就是有衝勁阿~

arrow
arrow
    全站熱搜

    nsysumis94 發表在 痞客邦 留言(1) 人氣()