[アルゴリズム] 1から100までの素数を取得(JavaScript編)

2017/02/28

Javascript テクノロジー プログラミング 特集

t f B! P L
素数の算出って前からコーディングしておきたかったんですよね。 とりあえず、この間、会社の人に「素数って何?」と聞かれて、知らない大人がいるのかと内心ビックリしていたんですが、素数を知ってる人って理数系っている定義、必要ですか? 「複素数」を知らないのは100歩譲って許すが、素数は知らないと恥ずかしいレベルだろ!と思うのは僕だけでしょうか?

素数について

とりあえず、どうしてもわからない人の為に簡単に説明しておきます。 https://ja.wikipedia.org/wiki/素数
1より大きい自然数で、正の約数が 1と自分自身のみであるもののことである
ようするに、1以外で割り切れない数の事で、1は素数に入らないという事から、素数の最小数は2という事になる。

素数のギネス記録

ちなみに、現時点での素数の最大数は
2を4311万2609乗し、1を引いた数(1297万8189桁)
という数値らしいです。まったく想像できん・・・orz

ソースコード

//素数追求 function getPrimeNumber(num){ var flg = 0; for(var i=2; i<=num -1; i++){ if(num % i === 0){ flg = i; break; } } if(flg === 0){ return true; } else{ return false; } } // 結果数値用の器 var prime_numbers = []; // 1~100まで for(var i=2; i<=100; i++){ if(getPrimeNumber(i) === true){ prime_numbers.push(i); } } // 結果 console.trace(prime_numbers);

実行

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 100までの数字で素数は25個存在するという事ですね。 wikipediaに正解が書かれているんですが、どうやら問題なく正解のようですね。

解説

素数の性質から2からスタートして100までのfor文

基本for文と割り込む関数内のfor文が2からスタートしているのは、このためです。

getPrimeNumber関数

素数であればtrueを返し、割り切れる数が存在すれば、falseを返すようにしてます。 %の余剰を使って割り切れるかどうかを判定してます。

余談・・・

素数の計算式というのがあって、 という式です。 詳しく知りたい人はググッてもいいし、数学勉強して理解してみてください。 ここでは、この式の解説は行いません。

リンク

色々なプログラム言語でアルゴリズム学習

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ