兄弟素数(いとこ素数,セクシー素数)
差が2だと双子素数なら差が4とか6とかだとどうなんだろう、という事で調べてみました。兄弟素数というのは私の造語です。一般になんと呼ばれているのかは分かりません。なお、今回のプログラムでは隣接する素数同士の距離しか測っていません。例えば距離4の素数の組として3と7のように間に別の素数をはさむ物は除外しています。
(2012/5/9追記)
差が4のものを「いとこ素数」、差が6のものを「セクシー素数」と呼ぶそうです。なんで差が6でセクシーなのかというとラテン語で6が「sex」だからだそうです。
#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE (1024)
int main( int ac, char *av[] )
{
long long i, p, *primelist, d;
char buf[BUF_SIZE];
/* コマンドラインから差を決定する */
if( ac < 2 ) {
fprintf( stderr, "usage : brotherprime d\n" );
return( 1 );
}
d = strtoll( av[1], NULL, 10 );
if( d < 2 ) {
fprintf( stderr, "bad parameter\n" );
return( 1 );
}
/* ペア候補素数を格納する配列を用意 */
if( ( primelist = calloc( d, sizeof(long long) ) ) == NULL ) {
fprintf( stderr, "calloc failed\n" );
return( 1 );
}
for( i = 0; i < d; i++ )
primelist[i] = 0;
/* 兄弟素数を探す */
while( fgets( buf, BUF_SIZE, stdin ) ) {
if( ( p = strtoll( buf, NULL, 10 ) ) == 0 )
continue;
for( i = 0; i < d; i++ ) {
if( primelist[i] != 0 && p - primelist[i] == d )
printf( "%lld %lld\n", primelist[i], p );
}
for( i = d - 1; i > 0; i-- )
primelist[i] = primelist[i - 1];
primelist[0] = p;
}
free( primelist );
return( 0 );
}
1億以下の素数一覧データに対して距離を4から20まで変えて調べてみたところ、兄弟素数(いとこ素数,セクシー素数)は以下の組だけ存在しました。
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 440,258組 |
| 6(セクシー素数) | 874,554組 |
| 8 | 437,125組 |
| 10 | 581,860組 |
| 12 | 872,551組 |
| 14 | 521,555組 |
| 16 | 435,413組 |
| 18 | 866,243組 |
| 20 | 576,603組 |
距離が離れれば組の数も減っていくと予想したのですが、意外とそうでもありませんでした。ちなみに隣接する素数同士の距離は無限に大きいものが存在しますので、どんなに距離の離れた兄弟素数も存在する事になりますが、ある距離の兄弟素数の数が無限に存在するかどうかはわかりません。距離2の場合は無限に存在するわけなんですが。
(2005/4/18追記)
双子素数で書きました通り、双子素数が無限に存在するというのは未だに証明されていないようです。ですので、距離2の兄弟素数が無限に存在するというこちらの記述も取り消します。
(2012/2/15追記)
素数一覧を10億まで求めたので、こちらも10億以下にデータを更新しました。
(2014/11/3追記)
1兆以下までデータを更新しました。
(2020/1/1追記)
10兆以下までデータを更新しました。
(2020/4/25追記)
ソースコードを少し整理しました。
(2026/4/1追記)
int を long long に変更するとともに、ソースコードを少し整理しました。
合わせて間に別の素数を挟む場合にも対応しました。例えば 3 と 7 はいとこ素数ですが、間に 5 を挟みます。従来のプログラムは隣り合った素数のみを対象にしていたため、このような素数は検出できませんでした。間に別の素数を挟む場合も対応したため、兄弟素数の組の数も修正しています。
兄弟素数(いとこ素数,セクシー素数)の組の数
1万以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 203組 |
| 6(セクシー素数) | 405組 |
| 8 | 205組 |
| 10 | 261組 |
| 12 | 395組 |
| 14 | 239組 |
| 16 | 192組 |
| 18 | 397組 |
| 20 | 263組 |
10万以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 1,216組 |
| 6(セクシー素数) | 2,436組 |
| 8 | 1,255組 |
| 10 | 1,609組 |
| 12 | 2,400組 |
| 14 | 1,460組 |
| 16 | 1,212組 |
| 18 | 2,436組 |
| 20 | 1,623組 |
100万以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 8,144組 |
| 6(セクシー素数) | 16,292組 |
| 8 | 8,193組 |
| 10 | 10,866組 |
| 12 | 16,252組 |
| 14 | 9,789組 |
| 16 | 8,133組 |
| 18 | 16,328組 |
| 20 | 10,896組 |
1000万以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 58,622組 |
| 6(セクシー素数) | 116,721組 |
| 8 | 58,337組 |
| 10 | 77,842組 |
| 12 | 116,850組 |
| 14 | 70,090組 |
| 16 | 58,221組 |
| 18 | 116,798組 |
| 20 | 77,842組 |
1億以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 440,258組 |
| 6(セクシー素数) | 874,554組 |
| 8 | 437,125組 |
| 10 | 581,860組 |
| 12 | 872,551組 |
| 14 | 521,555組 |
| 16 | 435,413組 |
| 18 | 866,243組 |
| 20 | 576,603組 |
10億以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 3,424,680組 |
| 6(セクシー素数) | 6,804,789組 |
| 8 | 3,403,284組 |
| 10 | 4,525,545組 |
| 12 | 6,782,577組 |
| 14 | 4,054,697組 |
| 16 | 3,381,259組 |
| 18 | 6,726,612組 |
| 20 | 4,481,429組 |
100億以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 27,409,999組 |
| 6(セクシー素数) | 54,452,336組 |
| 8 | 27,225,475組 |
| 10 | 36,206,290組 |
| 12 | 54,292,893組 |
| 14 | 32,440,985組 |
| 16 | 27,032,730組 |
| 18 | 53,829,024組 |
| 20 | 35,871,813組 |
1000億以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 224,373,161組 |
| 6(セクシー素数) | 445,631,845組 |
| 8 | 222,799,578組 |
| 10 | 296,377,691組 |
| 12 | 444,511,152組 |
| 14 | 265,526,520組 |
| 16 | 221,222,728組 |
| 18 | 440,596,583組 |
| 20 | 293,617,044組 |
1兆以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 1,870,585,459組 |
| 6(セクシー素数) | 3,714,622,313組 |
| 8 | 1,857,170,949組 |
| 10 | 2,469,723,227組 |
| 12 | 3,703,635,698組 |
| 14 | 2,212,683,816組 |
| 16 | 1,843,559,601組 |
| 18 | 3,671,689,674組 |
| 20 | 2,446,837,443組 |
10兆以下
| 距離 | 組の数 |
|---|---|
| 4(いとこ素数) | 15,834,656,003組 |
| 6(セクシー素数) | 31,437,582,124組 |
| 8 | 15,718,057,756組 |
| 10 | 20,897,099,161組 |
| 12 | 31,338,242,047組 |
| 14 | 18,722,078,419組 |
| 16 | 15,598,699,972組 |
| 18 | 31,081,345,911組 |
| 20 | 20,713,473,806組 |