JavaScriptで素数を列挙する

ある問題を解くために素数が必要になったので、JavaScriptで素数を列挙する方法を考えてみました。
最も小さい素数は2で、次は3です。配列にセットします。
そして5,7,9,11と奇数について順に素数であるか確認していきます。
5が「5未満の素数」で割り切れるか確認します。実際は5の2乗根以下の素数について確認すれば十分です。これを超える素数では5を割り切れないからです。したがって「2乗して5以下の素数」で割り切れるか確認します。「2乗して5以下の素数」である2で割り切れないので5は素数です。配列にセットします。
7が「2乗して7以下の素数」で割り切れるか確認します。2で割り切れないので7は素数です。配列にセットします。
9が「2乗して9以下の素数」で割り切れるか確認します。2で割り切れないですが、3で割り切れるので9は素数ではありません。
11が「2乗して11以下の素数」で割り切れるか確認します。2,3で割り切れないので11は素数です。配列にセットします。
これを繰り返します。 (さらに…)

クレジットカード番号をチェックする

クレジットカードの番号には規則があり合致しないとエラーになります。
チェックの仕組みを「ルーンアルゴリズム」と言うそうです。
この手のチェックの仕組みは数列からチェックデジットを計算して先頭か末尾に付けるというパターンが多いと思いますが、この仕組みは数列全体が正しいか否かをチェックするようです。
これをJavaScriptで再現してみました。 (さらに…)

VBAでクイックソート(改良版)

前にVBAでクイックソートをする方法を紹介しましたが、配列の扱いがよく分からず、CSVに変換して行う方法でした。
今回、配列の処理方法が分かったので、コードを書き直してみました。
処理が劇的に速くなりました。バブルソートなど他のソートとは比較になりません。 (さらに…)

JavaScriptで「偏りランダム」を行う方法

プログラムでランダムに値を変えるという場面はよくあります。
JavaScriptならば次のようにします。
血液型("A", "O", "B", "AB")からランダムに一つ取り出すサンプルです。 (さらに…)

JavaScriptで配列をシャッフルする

PHPには配列の要素をシャッフルする「shuffle」という関数がありますが、JavaScriptにはないので、メソッドを自作して使っています。
シャッフルというのは要素をランダムにするのではなく、要素の組合せは変えずに順番をランダムにすることです。
[0, 1, 2, 3, 4] を [3, 1, 2, 0, 4]にするような処理です。 (さらに…)

JavaScriptで順列、組合せ

JavaScriptで配列と抜き取り数を与えると全ての順列、組合せを配列で返す関数です。 (さらに…)

いろいろなソート(サンプル付き)

ソートのアルゴリズムについて調べました。
代表的なソート方法5種類について概略をまとめます。
n個の要素を持つ配列を昇順(小さい数から大きい数)にソートする場合です。 (さらに…)

配列のマージ

二つの配列を統合する方法に「マージ」というのがあります。

それぞれの先頭の要素を比べ、小さい方をとります。とった要素は結果用の別の配列に追加します。
とられた配列は先頭の要素が替わります。
またそれぞれの先頭の要素を比べ、小さい方をとります。
これを繰り返します。
いずれどちらかの配列が空になりますので、残った方の配列を結果用の配列にそのまま付け足します。 (さらに…)

線形探索と二分探索をVBAで

線形探索(逐次探索)と二分探索をVBA(Excel)で行う方法です。
それぞれサンプルを示します。
ここではExcelのシートのA列の1行から40行まで昇順の数値が入っている場合に、ある数値を探し、その行番号を表示することにします。 (さらに…)

PHPで組合せをすべて表示

PHPで数学の「組合せ」をすべてリストアップするコードを書いてみました。

「組合せ」とは、n 個からm 個を選ぶ場合のすべてのパターンのことで、そのパターンの数は
=n!/(m!(m-n)!)
で表されます。
例えば、「1,2,3,4,5,6」という6個から4個を選ぶ場合には
1234、1235、1236、1245、1246、1256、1345、1346、1356、1456、2345、2346、2356、2456、3456
という15通りのパターンができます。 (さらに…)

新しい記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報