兄弟素数(いとこ素数,セクシー素数)

兄弟素数(いとこ素数,セクシー素数)

差が2だと双子素数なら差が4とか6とかだとどうなんだろう、という事で調べてみました。兄弟素数というのは私の造語です。一般になんと呼ばれているのかは分かりません。なお、今回のプログラムでは隣接する素数同士の距離しか測っていません。例えば距離4の素数の組として3と7のように間に別の素数をはさむ物は除外しています。

(2012/5/9追記)

差が4のものを「いとこ素数」、差が6のものを「セクシー素数」と呼ぶそうです。なんで差が6でセクシーなのかというとラテン語で6が「sex」だからだそうです。

#include <stdio.h>
#include <stdlib.h>

int main( int ac, char *av[] )
{
    int n, m, d;
    char buf[1024];

   /*  コマンドラインから差を決定する    */
    if( ac < 2 )
        return( 1 );
    d = strtol( av[1], NULL, 10 );

    m = -1;
    while( fgets( buf, 1024, stdin ) ) {
        n = strtol( buf, NULL, 10 );
        if( m != -1 && n - d == m )
            printf( "%d %d\n", m, n );
        m = n;
    }

    return( 0 );
}

1億以下の素数一覧データに対して距離を4から20まで変えて調べてみたところ、兄弟素数(いとこ素数,セクシー素数)は以下の個数存在しました。

距離 4(いとこ素数) 6(セクシー素数) 8 10 12 14 16 18 20
個数 440257 768752 334180 430016 538382 293201 215804 384738 202922

距離が離れれば個数も減っていくと予想したのですが、意外とそうでもありませんでした。ちなみに隣接する素数同士の距離は無限に大きいものが存在しますので、どんなに距離の離れた兄弟素数も存在する事になりますが、ある距離の兄弟素数の数が無限に存在するかどうかはわかりません。距離2の場合は無限に存在するわけなんですが。

(2005/4/18追記)

双子素数で書きました通り、双子素数が無限に存在するというのは未だに証明されていないようです。ですので、距離2の兄弟素数が無限に存在するというこちらの記述も取り消します。

(2012/2/15追記)

素数一覧を10億まで求めたので、こちらも10億以下にデータを更新しました。

(2014/11/3追記)

1兆以下までデータを更新しました。

範囲/距離 4(いとこ素数) 6(セクシー素数) 8 10 12 14 16 18 20
1万以下 202 299 101 119 105 54 33 40 15
10万以下 1215 1940 773 916 964 484 339 514 238
100万以下 8143 13549 5569 7079 8005 4233 2881 4909 2401
1000万以下 58621 99987 42352 54431 65513 35394 25099 43851 22084
1億以下 440257 768752 334180 430016 538382 293201 215804 384738 202922
10億以下 3424679 6089791 2695109 3484767 4468957 2464565 1846097 3351032 1824043
100億以下 27409998 49392723 22160841 28764495 37588207 20943953 15888305 29189691 16296072
1000億以下 224373160 408550278 185402143 241298621 319972455 179718000 137715130 255371697 145357801
1兆以下 1870585458 3435528229 1573331564 2052293026 2753597777 1556469349 1202533145 2246576317 1298682892

あおやぎのさいと2.0初歩の整数論プログラミング