iT邦幫忙

0

請問有人願意挑戰?<在3個數字中找出最大公因數>

不明 2019-03-30 17:01:052188 瀏覽
  • 分享至 

  • xImage

小弟最近發覺自己寫的東西雖然能自己解決問題但離網路上的標準解
都有一段距離,所以想請有興趣的人寫寫看
1999929510,2100000003,2100000024
是要輸入的數字,小弟的程式跑了1645次
也是小弟自己無參考能做到最好的情況
若有興趣的人也可以與小弟分享次數

看更多先前的討論...收起先前的討論...
淺水員 iT邦大師 6 級 ‧ 2019-03-30 17:39:24 檢舉
可以考慮用輾轉相除法看看
小魚 iT邦大師 1 級 ‧ 2019-03-30 17:57:24 檢舉
挑戰了有獎勵嗎?
不明 檢舉
@淺水員 網路上最佳解就是寫這個
不明 檢舉
@小魚 如果我感謝算的話~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
Gary
iT邦新手 5 級 ‧ 2019-03-30 21:08:27
最佳解答
// js
const dataArr = [1999929510, 2100000003, 2100000024]

// 輾轉相除法
const euclidean = (num1, num2) => {
  console.count('輾轉相除法')
  if (num2 === 0) {
    return num1
  } else {
    return euclidean(num2, num1 % num2)
  }
}

// 最大公因數
const gcd = argu => argu.reduce((acc, tmp) => euclidean(acc, tmp))


console.log(`最大公因數為:${gcd(dataArr)}`)

// result:
// 輾轉相除法: 19
// 最大公因數為:3
不明 檢舉

感謝你的回答,一開始完全沒想過輾轉相除法哈哈

我要發表回答

立即登入回答