從網路課程 程式必修課!離散數學與演算法 來淺嚐一下沒機會在課堂上所學的離散數學與演算法。或許對撰寫程式的效能提昇會有些幫助。
課程相關資訊
[連結]:https://hiskio.com/courses/1196/lectures/133747
本篇範圍:Chapter 5
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
Nth Prime
1. 由於大於 1 的數,僅可能是質數、合數或是質數的乘積,所以你可以僅「檢查所有奇數」,並與已知的質數相除看看即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
const nthPrime = (n) => { if(!Number.isInteger(n) || n<=0) return 'Not Valid Input' const primes = [2,3,5,7,11,13] let start = 17 while(primes.length < n){ let primeChecked = true for(let i=0; i<primes.length; i++){ if(start % primes[i] === 0){ primeChecked = false break } } if(primeChecked){ primes.push(start) } start += 2 } return primes[n-1] } console.log(nthPrime('sss')) // Not valid Input console.log(nthPrime(-1.5)) // Not valid Input console.log(nthPrime(-1)) // Not valid Input console.log(nthPrime(0)) // Not valid Input console.log(nthPrime(1)) // 2 console.log(nthPrime(2)) // 3 console.log(nthPrime(10)) // 29 console.log(nthPrime(100)) // 541 |