iT邦幫忙

0

Day 18, 巧妙的最大公因數C++設計

  • 分享至 

  • xImage
  •  

今天,我嘗試自己設計最大公因數程式碼,打得落落長一大堆if, else,不亦樂乎,結果測試結果失敗,所幸對了50%的測試(這哪好?,我卡在若輸入二數值是質數與質數相乘的情況(7x13 VS 7x17),答案會是錯的gcd = 1,這是因為,我只有設定2, 3, 5數值,其他就沒有設定,且我不知道除了暴力解還能怎麼辦,所以我上網找答案,結果找到了一個令我為之震撼的超簡潔程式碼:
網址:https://takamai.pixnet.net/blog/post/34642223

#include<iostream> 
using namespace std; 

int gcd(int, int); 

int main() { 
    int m = 0;
    int n = 0; 

    cout << "輸入兩數:"; 
    cin >> m >> n; 

    cout << "GCD: " 
         << gcd(m, n) << endl; 

    return 0; 
} 

int gcd(int m, int n) { 
    int r = 0; 

    while(n != 0) { 
        r = m % n; 
        m = n; 
        n = r; 
    } 

    return m; 
}

看看這個半毛if else都沒有的簡潔美麗程式,看看這巧妙的求餘數並替換變數的方法,開拓新知識了。重點是,這程式還過了測試!我到現在還是難理解這怎麼做到的,回去消化ing。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
柳丁柚
iT邦新手 1 級 ‧ 2022-06-22 11:00:31

國小數學 - 輾轉相除法了解一下

乾蝦~

我要留言

立即登入留言