JavaScriptで素数判定(高速ver)の時間測定
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 35 36 37 38 39 40 41 |
function isPrime(n){ if(false===Number.isInteger(n)){ return false; } if(n<=1){ return false; } if(2===n){ return true; } if(0===n%2){ return false; } var square_root = Math.floor(Math.sqrt(n)); for(var i=3; i<=square_root; i+=2){ if(0===n%i){ return false; } } return true; } function getPrimeCnt(n){ var cnt = 0; for(var i=0; i<=n; i++){ if(isPrime(i)){ cnt++; } } return cnt; } var n = 1000000; var time_old = new Date().getTime(); var cnt = getPrimeCnt(n); var time_now = new Date().getTime(); var msec = time_now - time_old; console.log(n + "以下の素数の数 : " + cnt + "個数"); console.log("計算時間 : " + msec + "ミリ秒"); |
1 2 |
1000000以下の素数の数 : 78498個数 計算時間 : 224ミリ秒 |