• 締切済み

この素数の規則性は既知ですか?

奇数 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51 奇数のうち素数じゃないものには分かりやすい規則性がある 3^3から始まり3x2間隔 5^5から始まり5x2間隔 7^7から始まり7x2間隔 9^7から始まり9x2間隔 つまりn番目の周期の開始位置が(2n+1)^2で、 間隔が2(2n+1)なのです。 この周期に基づき素数判定プログラムを書いてみましたが、2万くらいまで調べても正しく動作しました。 (信頼されている素数判定プログラムと同じ結果を返しました) この規則性は既知でしょうか? 3以上の素数は全て奇数ですから、 奇数のうちの素数じゃないものに規則があるということは、 素数の規則がわかったと言っても良いと思うのですが、 まあ、もともと素数生成アルゴリズムはたくさんありますね。 数学者が素数について議論していると言われますが数学者が求めている素数の規則性とはどんなものなのでしょうか?

みんなの回答

  • windwald
  • ベストアンサー率29% (610/2083)
回答No.2

それは自明すぎる規則性ですね。 n^nから2n間隔ということはその数はn^n+2kn(kは非負整数,nは2以上の整数)であり全てnの倍数です。 #1さんのおっしゃっていることがずばりです。 LangFanさんのこの方法はエラトステネスのふるいの変形版です。

noname#232491
noname#232491
回答No.1

エラトステネスのふるい と呼ばれているものと大差なしでしょう。

LangFan
質問者

お礼

似てますけど微妙に違いますね。 奇数だけでエラトステネスのふるいをやる+探索リストを保持しなくていい という点があると思います。 エラトステネスのふるいと呼ばれるアルゴリズムは最初に探索リストを作成し そこから不要なものを削除していくので、探索範囲を限定しなければいけません。 しかしこの周期性に基づくアルゴリズムは開始された周期を記録しておくリストを持ち、 そのリストに周期を追加していくだけなので上限無く探索できます。 この周期性に基づいた方法なら、 奇数列自体は自明なので記録する必要が無く、 1ビット目が3,2ビット目が5、3ビット目が7と解釈されるようなビット列を各周期毎に持ち、 登場位置のビットを立てて、 全ビット列で論理和を取り、反転させるだけで素数が求まります。

関連するQ&A

  • 連立方程式を解きたい(複素数)

    実際の式よりかなり簡略化してます。 |1-a・X|^2 / |1-y・X|^2 = e   ・・・(1) |1-b・X|^2 / |1-y・X|^2 = f   ・・・(2) |1-c・X|^2 / |1-y・X|^2 = g   ・・・(3) X     →複素数(求めたいパラメータ) a,b,c,y  →既知の複素数(測定値) e,f,g   →既知の実数  (測定値) ||      →絶対値記号 上記の工学系方程式を解きたいのですが、絶対値記号があったり パラメータが複素数だったりでちんぷんかんぷんです。 まず、方程式は3つも必要なんでしょうか? ニュートン法じゃないと解けないのでしょうか? あつかましいお願いですが、文系の私にも分かるように説明をお願いできませんでしょうか。 数学の自由な皆さん、よろしくお願いします。

  • 素数の規則性って

    わかってないんですか? 先日友人に「素数の規則わかったらノーベル賞とれるよ」と言われたのですが本当ですか? 確かにパッと考えてみてもわかりませんでしたが、数学者の方とかがそんなに長い間解けない様な難題なのでしょうか。 今もまだ素数を求める式とかないってことですよね?(違ったらすみません あとノーベル賞はさすがに嘘ですよね...?笑

  • 共役複素数

    こんばんは。高校数学II、共役複素数についての質問です。 私が使っている参考書(数学公式180)に記載されている公式の解説がわかりません。 <公式>実数を係数とするn次方程式 f(x)=0 について、     複素数 α=a+bi が解ならば   共役複素数 αバー=a-bi も解である。 <解説>実数を係数とするn次方程式    f(x)=Anx^n+A(n-1)x^(n-1)+A(n-2)x^(n-2)       +…+A1X+A0=0  があるとき、f(α)=0とすると       Anα^n+A(n-1)α^(n-1)+…+A1α+A0=0  この両辺の共役複素数を考えると、実数については    Aバーk=Ak(k=0,1,2,…,n)が成り立つので    Anαバー^n+A(n-1)αバー^(n-1)+…+A1αバー+A0=0  すなわち、f(αバー)=0が得られる。   ↑この解説について??です。  わかる方、もしくは他の解説がありましたら教えていただけるとありがたいです。よろしくお願いします。

  • ゴールドバッハの予想? 素人に難しさを教えてください。

    「2より大きい偶数は2つの奇数で表せる」というのがゴールドバッハの予想ですが、 単純に考えて、素数は奇数の一部ということで、 奇数+奇数=偶数 ↓ 素数+素数=偶数 と、こんな簡単に証明できないのでしょうか? 私は数学が苦手です。 数学者の気持ち(考えているレベル)が知りたいのですが、 上の証明が数学的にダメな点をご指摘ください。 数学の専門家にお聞きしたいです。

  • 『規則1:偶数ならば2で割る。…』どこの入試?

    以下の「規則、自然数」に関する問題が、今年のどこの「高校入試」なのか教えてください!! 質問内容を少し不思議に思われるかもしれませんが、最近、あらゆる「整数問題」を今年の入試より集め(○○年度、○○高と記入)、片っ端から解いていました。この問題だけが表紙なしで高校名が不明だったので、どうしても調べておきたいと思ったからです。この問題の出題(マークシート方式)高校名をぜひ教えてください。よろしくお願いします。 問題2. 2以上の自然数Nについて,次の規則に従って計算していく。計算の結果が1になったとき計算することをやめることにする。 規則1…計算する数が偶数ならば2で割る。 規則2…計算する数が奇数ならば1を加える。 例えばN=4のとき、4→(規則1)2→(規則1)1 のように4は2回の計算で1になる。 またN=5のときは、5→(規則2)6→(規則1)3→(規則2)4→(規則1)2→(規則1)1 のように5は5回の計算で1になる。 (1) N=25は( )回の計算で1になる。 (2) 5回の計算で1になる自然数は、小さい順に 5、( )、( )、( )、32の5個ある。 (3) 10回の計算で1になる自然数のうち、偶数は34個、奇数は21個ある。このとき、11回の計算で1になる自然数は全部で ( )個あることがわかる。

  • Σk^xの係数に規則性を見つけました

    0[k=1,n]k^x (xは0以上の整数) を計算して求められたnの多項式の係数に規則性を発見しました。以下に示すこの規則性が正しいかどうか、或いは既知の内容なのかを教えてください。      n    n^2   n^3     n^4   n^5   n^6   n^7   n^8   n^9   n^10   n^11   n^12 x=0 ( 1 )   1 ( 1/2 ) ( 1/2 )   2 ( 1/6 ) ( 1/2 ) ( 1/3 )   3 ( 0 ) ( 1/4 ) ( 1/2 ) ( 1/4 )   4 (-1/30) ( 0 ) ( 1/3 ) ( 1/2 ) ( 1/5 )   5 ( 0 ) (-1/12) ( 0 ) ( 5/12) ( 1/2 ) ( 1/6 )   6 ( 1/42) ( 0 ) ( -1/6) ( 0 ) ( 1/2 ) ( 1/2 ) ( 1/7 )   7 ( 0 ) ( 1/12) ( 0 ) (-7/24) ( 0 ) ( 7/12) ( 1/2 ) ( 1/8 )   8 (-1/30) ( 0 ) ( 2/9 ) ( 0 ) ( -7/15) ( 0 ) ( 2/3 ) ( 1/2 ) ( 1/9 )   9 ( 0 ) (-3/20) ( 0 ) ( 1/2 ) ( 0 ) (-7/10) ( 0 ) ( 3/4 ) ( 1/2 ) ( 1/10)   10 ( 5/66) ( 0 ) ( -1/2) ( 0 ) ( 1 ) ( 0 ) ( -1 ) ( 0 ) ( 5/6 ) ( 1/2 ) ( 1/11)   11 ( 0 ) ( 5/12) ( 0 ) (-11/8) ( 0 ) ( 11/6) ( 0 ) (-11/8) ( 0 ) (11/12) ( 1/2 ) ( 1/12) かなり見にくいですがこの表を斜めに見下ろすと、一番長い列から順に n^(x+1) の係数は 1/(x+1) n^x・・・ 1/2 n^(x-1)・・・ x/12 n^(x-2)・・・ 0 n^(x-3)・・・ -(x)P(3)/6! ←(x)P(3)=x(x-1)(x-2) (すなわちxパーミテーション3のこと) n^(x-4)・・・ 0 n^(x-5)・・・ (x)P(5)/(6×7!) n^(x-6)・・・ 0 n^(x-7)・・・ -3×(x)P(7)/10! n^(x-8)・・・ 0 n^(x-9)・・・ -5×(x)P(9)/(6×11!) n^(x-10)・・・ 0 という風にかなり規則性があります。 (x-7)乗や(x-9)乗あたりはかなり怪しいですが・・・ 手計算ですし、x=12ではまだ上の規則に従ったものの、x=13からは分子に素数が出てきてしまい、ダメでした。パソコンで計算できればいいのですが、そのような知識と技量もなく・・・ 回答お待ちしています。

  • C言語<素数を求めるプログラム>

    #include<stdio.h> int j; int prime(int n) { int i; if(n < 2) return 0; if(n == 2) return 1; if(n%2 == 0) return 0; for(i = 3; i*i<= n; i += 2){ if(n%i == 0) return 0; } return 1; } int main(void) { int n; for(n=1; n <= 1000; n++) { if(prime(n)){ printf("%d\n",n); j++; } } printf("素数の個数は全部で %d 件見つかりました。\n",j); return 0; } このプログラムは1から1000までの素数のみを表示させるプログラムでありますが、このアルゴリズムが全くわかりません。 int prime(int n)の中身のアルゴリズムがどういう仕組みになっているのかお分かりになりますでしょうか?

  • 素数判定について

    C言語で、 素数を判定するのに、全ての素数で割ることによって 判定するプログラムって、どのように作ればいいんでしょうか?それを線形リストを使えっていってもわかりません。 全ての数で順に割っていって割りきれた数が割られた数と同じなら素数で、それ以外なら素数ではないというプログラムならできるんですけど。。。

  • JAVAで素数判定

    JAVAの勉強をしてます 練習問題で、素数判定のプログラムをしているのですが。 1~14までの判定はうまくいきますが、15の判定の時に素数であると表示されて困ってます。どなたかわかりませんか? //読み込んだ数字 n が 15 の場合 if(n == 1) System.out.println("素数ではありません。"); if(n == 2) System.out.println("素数です。"); for (int i = 2; i < n; i++) { if (n % i == 0) { System.out.println("素数ではありません。"); break; } else { System.out.println("素数です。"); break; } } --結果---------------------------------------------- 素数です

    • ベストアンサー
    • Java
  • 2から120以下の素数を求める

    2以上120以下の素数を全て求めて表示するプログラムを書きなさい。 素数か否かの判定には以下のアルゴリズム[処理手順] (2 <= n <= 120のときのみ有効)を用いなさい。 i) nが2, 3, 5, 7, 11のうちのどれかと等しければNは素数 ii) nが2, 3, 5, 7, 11の全てに対して割切れなければNは素数 iii) それ以外(iもiiも不成立)のとき、Nは素数ではない。 *) 2, 3, 5, 7, 11は最初に出力してしまい、 n=12から120までをfor文のなかで判定すればよい。 というC言語の課題です。 自分でプログラムを作ったのですが、うまくできません・・。 if文が働いてないようなのですが、どこが間違っているのでしょうか? #include <stdio.h> int main(void) { int i; printf("2\n"); printf("3\n"); printf("5\n"); printf("7\n"); printf("11\n"); for (i=12;i<=120;i++){ if (i%2!=0 || i%3!=0 || i%5!=0 || i%7!=0 || i%11!=0){ printf("%d\n",i); } else{ printf(""); } } printf( "\n" ); return 0; }