この記事は非公開化されました。 integers.hatenablog.com 非公開前の内容要約: ある517桁の素数の紹介。 この記事の内容は部分的に書籍『せいすうたん1』の第12話に収録されています。 integers.hatenablog.com
ちょっと気晴らしにフェルマーテストを書いてみました。 この前boostの多倍長ライブラリを入れたので、C++で書いてみました。テストの式の微妙な違いで大きな差が出たのでちょっとメモしておきます。 ap = a (mod p) (1) のようなテストをすると、大量のカーマイケル数が陽性になりました。ちなみに(1)は正しいフェルマーテストのチェック式ではなくて、何も見ずにプログラムを書いてみたときに使った式です。 で疑陽性多すぎるなと思って、よくよく調べてみると正しい式は(2)でした。 ap-1 = 1 (mod p) (2) 上式でテストすると、疑陽性は少なくなりました。[1, 1000000)まででテストしましたが、疑陽性は出ませんでした(各数に対するテスト反復回数=100)。(1)と(2)って同じように見えるけど、(2)の方が厳しい条件ですね。 例えばカーマイケル数561は、
与えられた数が素数かどうかを判定する乱択アルゴリズムです。RSA暗号の実現可能性を示すために重要な役割を担った歴史的価値の高いアルゴリズムです[1]。 Solovay–Strassenの素数判定法は、オイラーの基準 a^(p-1)/2 = (a / p) (mod p) (1) を利用します。ただし、pは素数です。(a / p)はルジャンドルの記号で、その値は 0 a = 0 (mod p)の場合 1 aが法pにおける平方剰余の場合 -1 aが法pにおける平方剰余ではない場合 のように定義されます。 与えられたnが式(1)を満たせば素数、満たさなければ合成数と判定します。 左辺は繰り返し二乗法を使えば高速(nを多倍長整数とするとnの桁数に比例する時間)に計算できます。右辺は平方剰余の相互法則[2]を使えば高速に計算できます。 フェルマーテストのときと同様に、この判定法では疑陽
最終更新日:2005.11.27 この文書は、Manindra's home pageにて公開されているPRIMES is in PのRevised paper version(3訂版)に基づいている。同論文の2005年11月27年現在の最新版はAUgust, 2005 version(6訂版) AKSアルゴリズムについての概説は、Wikipediaの項目も参照。 目次 紹介 発想 記法 アルゴリズム アルゴリズムの正当性 計算量の評価 関連資料 変更履歴 紹介 AKSアルゴリズムとは、2002年8月6日に、PRIMES is in Pという論文の中に示された決定性多項式時間の素数判定アルゴリズムである。素数に関係する世界では大変話題になった。アルゴリズムの名前は、論文の著者であるインド工科大学計算機科学工学部のManindra Agrawal教授と、その学生であるNitin Saxena
以前公開していた 10 億から 20 億までの素数一覧は,学校HPのコンテンツの増大にともない,容量に余裕がなくなりましたので公開を中止します。上記ファイルも容量の都合で今後予告なく公開を中止することがありますのでご了承ください。 天文研究部では,電波による天体観測を計画しています。 不要になった無線機やアンテナ等の無線機器や,ノウハウをおゆずりください。 とくに,オフセットの無い旧式のパラボラアンテナを探しております。 望遠鏡・双眼鏡やカメラなどの光学機器も不足しております。 よろしくお願いします。 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 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193
■ 素数表 ・10,000,000までの素数を下記に挙げる。 範 囲 個数 累積個数 サイズ(MB) 素数表1 2 - 1770437 133000 133000 2.56 素数表2 1770449 - 3738937 133000 266000 2.56 素数表3 3738947 - 5784439 133000 399000 2.56 素数表4 5784461 - 7876357 133000 532000 2.56 素数表5 7876361 - 9999991 132579 664579 2.56
プログラミングコンテストチャレンジブックを読んでいたら、素数リストの作り方が出てきた。 そういえば、10兆までの素数リストを作ってみる、なんて記事があったな。 これだ http://itpro.nikkeibp.co.jp/article/Watcher/20100519/348242/?ST=develop 読み返しているうちに、ついつい挑戦してみる気になってしまった。 色々試して意外だったのが、10億までの素数をリストアップした場合でも「試し割り」より「エラトステネスの篩」の方が100倍以上も高速だったことだ。リストが大きくなればその差はますます開いていく。 メモリ上の広い範囲をまんべんなくアクセスするエラトステネスの篩は、実際には効率が悪いのではないかと思ったりしたのだが、見当が外れてしまった。 考察してみるに 試し割りは意外と無駄が多い。まず素数の密度だがn/log(n)に従うらし
JavaでRSAを実装してみました。といっても基本的なところを実装しただけなので実用性はありません。 Javaの場合は、JCE(Java Cryptography Extension)という標準APIがあるので、そちらを使う方が実用的です。おまけとして、JCEを使ったソースコードも載せておきます。 大きい素数p, qを選びます。 n = pqとします。このときΦ(n) = (p-1)(q-1)になります。 k = Φ(n)とすると、オイラーの定理よりak = 1 (mod n) (式1)が成り立ちます。ただしaはnと互いに素な整数です。 aed = a(mod n) となるようなe, dを選びます。(式1)より、ed = 1 (mod k)を満たすようなeとdを選べばよいことが分かります。 暗号化するときは、平文Tに対してC = Te(mod n)とします。(e, n)が暗号化キーとなりま
Java には BigInteger というクラスがあり、長倍精度整数の計算は、一応簡単に処理ができます。 詳しいことは 「API 仕様」で調べてください。 「コンソールの場合」と「JFrame の場合」は独立に書いているので、内容が重複していることがあります。 JavaTM 2 Platform Standard Edition 5.0 API 仕様 (日本語) JavaTM 2 Platform Standard Edition 5.0 API Specification (英語) Java の入出力はストリームと呼ばれるもので処理される。 一番基本的な出力ストリームが System.out で、 入力ストリームが System.in である。 System.out.println() で出力できるように System.in.read() で入力することができる。 但し、これらはバイト
定規に刻まれているのは“素数”だけ! 京都大学の不便益システム研究所とサマーデザインスクールが共同監修した「素数ものさし」が、同大学の生協各店で販売されています。価格も素数にちなんで577円(税込)。使い方に困惑する声もある中、Twitterやはてなブックマークでは「欲しい」という人が続出しています。 ▽ 京大オリジナルグッズ・素数ものさし - Togetter 18cmの素数ものさしは、素数の部分だけに目盛りを付けたという、不便益システム研究所のグッズ第1弾です。ものさしの上部でcm単位を、下部でmm単位を測れます。cm単位には2・3・5・7・11・13・17という素数の数字と目盛りを、mm単位には目盛りのみを刻印。材質は竹で、目盛りはプリントではなく実際に焼き付けているそうです。 京都大学の生協で販売が開始されると、ネット上では「素数にこだわって定規を作る」というユニークな発想がじわじ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く