2018年1月7日日曜日

break : prime again (1) : like Mersenne number, 2^(Integer)-1

[0]休憩?/[a]素数生成式を考える、[b]オイラーの式:n^2+n+41では、連続40個素数を生成するが、41個を生成する式を試みる、[c]超巨大な素数を追いかけるのではなく、100以下の素数に着目する。素数の個数が一番多く(25個)、やはり密度が高い箇所に分析の対象としたいがため、[d]素数生成式は、過去に、sqrt(n)の連分数での循環節とかを調べていたが、pending、[e]原始根の実用的な使い方が、イマイチ理解できないが、使いたい、[f]数論の書籍を収集したが、読了に至るのはいつのことか?、その中で4n+1, 4n+3素数を知ってよかった、などなど。
---
[1]2017/Nov./2x)本:「世界は素数でできている」、小島寛之、角川新書、(2017)を見ていると、メルセンヌ数がかなり露出しているように感じた。p=(2^x)-1, p=素数、x=(1,2,3,,,自然数)
---
[2]想起:2017/Nov./e)p=(2^x)-1, p=(100以下の素数), x=整数で表現したら、どうなの?
2^x=p+1,log2(2^x)=log2(p+1),x=log2(p+1), cal by casio:fx-915ES.
^^^
p=2,x=1.584962501<=小数部同じ?
p=3,x=2
p=5,x=2.584962501<=小数部同じ?
p=7,x=3
p=11,x=3.584962501<=小数部同じ?
p=13,x=3.807354922
p=17,x=4.169925001
p=19,x=4.321928095
p=23,x=4.584962501<=小数部同じ?
p=29,x=4.906890596
p=31,x=5
p=37,x=5.247927513
p=41,x=5.392317423
p=43,x=5.459431619
...
※小数部(n.584962501)はマジックナンバーか?
---
[3]2017/Dec, (2^n.584962501)-1のnを追求すると、どうなるか?
リアルpに近づいたり、離れたりしている。たまに一致する場面もあるが。これは素数が式では表せない、ランダム性を内在するのか?とか夢想,,,p=式+ランダム,,,(pending)
---
[4]2017/Dec./Mid, (2^x)-1=p<=100, xはどうなの?
x=(整数部).(小数部), (小数部)=同一値で、(整数部)を(n, n+1,,,n+m)と変化させたときに、別の素数との絡みはあるか?とか,,,夢想,,,(pending)
---
[5]2017/Dec./17, 13:47-, (2,3)から全てがつくれるか?とか、,,,夢想,,,(pending)
---
[6](2^x)-1=p, x=n.(小数部),
(minus方向):x=1.(小数部), 2.(小数部), 3.(小数部),,,(n-1).(小数部)
(plus方向):x=(n+1).(小数部), (n+2).(小数部),,,(n+∞).(小数部)
の場合、他のpとの絡みは?
^^^
(minus方向)の場合、合成数を通過する。
例)p=43,x=5.459431619
x=4.459431619, (2^x)-1=21
x=3.459431619, (2^x)-1=10 <=
x=2.459431619, (2^x)-1=4.5
x=1.459431619, (2^x)-1=1.75
x=0.459431619, (2^x)-1=0.375
---
[7]仮説1)[a]奇数は、偶数からつくられる。
[b]素数は、奇数から素数判定で割り出す。基本はフェルマーテストで行う。
[c]カーマイケル数対策は、対象数のx=n.(小数部)の一つ前のx=(n-1).(小数部)の奇数に対する原始根で判定する。
///pow()≡1、@@@TODO

[d]対象数の1つ前が、偶数の場合は、偶数の素因数分解し、その全ての合成数で、原始根を求めて判定する。
///例)@@@TODO

---
[8]仮説1)作業用シート、一部(2017/Dec./19, 06:03)
[a]左端は、偶数だけのはずが、9が混じってしまった。
[b]縦の1列目=4n+1?、2列目以降=4n+3?
---
[9]素数判定
フェルマーテスト:本:「数の世界」、和田秀男、岩波書店、(1981)、p117/
a^(n-1) ≡ 1 (mod n), n=素数
a^(n-1) !≡ 1 (mod n), n!=素数
^^^
フェルマーテストをパスする合成数が存在する、それはカーマイケル数 (Carmichael number)。
---
[10]原始根を求める、紙媒体
本:「数の世界」、和田秀男、岩波書店、(1981)、p.244-/10,000以下の奇素数とその最小素数原始根の表
---
[11]原始根を求める、オンライン
WolframAlpha/primitiveroot[n], n<>pはerror. 
---
[12] 原始根を求める、オンライン実行
python.org/online consoleで、pow()を実行可。
>>> pow(123,456,789)
699
@pow(123,456,789)=mod(123^456, 789),pow()=べき剰余
---
[13]原始根をある範囲で求める。オンラインpgm実行環境で、もうしばらくpythonも使っていなかったので、結局慣れているRで実行。誰でも作れる内容ではあるが、自分用に公開。出先で使えるため。
https://ideone.com/4quvcG
---
[14]n=23(=p)の原始根を見る。最小素数原始根=5.
^^^[a]references
[wada's book] min(primitive root(23))=5
http://m.wolframalpha.com/, PrimitiveRoot[23]=5

^^^[b]ideone/4quvcG, makePowList()
pow(2,[0-22],23)
makePowList(v_base = 2, v_mod = 23, op_mode = "list")
 v_base v_mod num pow powDiffMod
1       2       23     0      1             22
2       2       23     1      2             21
3       2       23     2      4             19
4       2       23     3      8             15
5       2       23     4    16               7
6       2       23     5      9             14
7       2       23     6    18               5
8       2       23     7    13             10
9       2       23     8      3             20
10     2       23     9      6             17
11     2       23   10    12             11
12     2       23   11      1             22   
13     2       23   12      2             21
14     2       23   13      4             19
15     2       23   14      8             15
16     2       23   15    16               7
17     2       23   16      9             14
18     2       23   17    18               5
19     2       23   18    13             10
20     2       23   19      3             20
21     2       23   20      6             17
22     2       23   21    12             11
23     2       23   22      1             22

makePowList(v_base = 2, v_mod = 23, op_mode = "pow1")
 v_base v_mod num pow powDiffMod
1       2    23    0   1         22
12     2    23  11   1         22 @pow(2,11,23)=1
23     2    23  22   1         22 @pow(2,22,23)=1

^^^[c]v_base=[3-15], makePowList(v_base, v_mod = 23, op_mode = "pow1")
   v_base v_mod num pow powDiffMod
1       3    23    0   1         22
12     3    23  11   1         22
23     3    23  22   1         22

1       4    23   0    1         22
12     4    23  11   1         22
23     4    23  22   1         22

1       5    23   0    1         22
23     5    23  22   1         22

1       6    23   0    1         22
12     6    23  11   1         22
23     6    23  22   1         22
...
[7-14] : {6=(11,22), 7=(22), 8=(11,22), 9=(11,22), 10=(22), 11=(22), 12=(11,22), 13=(11,22), 14=(22)}. except n^0=1
...
1     15    23   0    1         22
23   15    23  22   1         22

^^^[d]checked it same as pow() in python.org.
pow(n,22,23)=1
-
pow(2,11,23)=1
pow(3,11,23)=1
pow(4,11,23)=1
pow(5,11,23)=22 <=here!
pow(6,11,23)=1
pow(7,11,23)=22
pow(8,11,23)=1
pow(9,11,23)=1
pow(10,11,23)=22
pow(11,11,23)=22
pow(12,11,23)=1
pow(13,11,23)=1
pow(14,11,23)=22
pow(15,11,23)=22
...
@all:pow()=1/or/22(=p-1)?
@see sheet[8], n=23(=2^(n.x)-1), 2^(n-1.x)-1=11.
(2017/12/23, started | 2018/01/09, 11:39, touched)
---
[15]n=47(=p)の原始根を見る。
^^^[a]makePowList(v_base = 2, v_mod = 47, op_mode = "pow1")
   v_base v_mod num pow powDiffMod
1       2    47    0   1         46
24     2    47  23   1         46
47     2    47  46   1         46

^^^[b]pow(?,?,47)=?
pow(n,46,47)=1
-
pow(2,23,47)=1
pow(3,23,47)=1
pow(4,23,47)=1
pow(5,23,47)=46 <=PrimitiveRoot[47]=5
pow(6,23,47)=1
pow(7,23,47)=1
pow(8,23,47)=1
pow(9,23,47)=1
pow(10,23,47)=46
pow(11,23,47)=46
pow(12,23,47)=1
pow(13,23,47)=46
pow(14,23,47)=1
pow(15,23,47)=46
...
@all:pow()=1/or/46(=p-1)?
@see sheet[8], n=47(=2^(n.x)-1), 2^(n-1.x)-1=23.
---
[16]n=15(!=p)の原始根の状態を見る。
@@@@:TODO
@@@@:TODO
---
[17]to[19] : blank.
---
[20]カーマイケル数対応の例)n=561, @this number is checked by Wikipedia.
[a-1]n=561=4n+1で、1列目の可能性大で、その一つ前は、偶数。
[a]pow(2,560,561)=1,フェルマーテスト=pass.
[b]log2(561+1)=9.13442632,x=0.13442632,
(2^8.x)-1=280<=this selected.偶数でした。
(2^7.x)-1=139.5
(2^6.x)-1=69.249~
(2^5.x)-1=34.1249~
(2^4.x)-1=16.5625
(2^3.x)-1=7.781249~
[c]280=2^3*5*7=2*2*2*5*7
[d][c]から合成数を生成する。
(1組)2, 5, 7
(2組)2*2=4, 2*5=10, 2*7=14, 5*7=35
(3組)2*2*2=8, 2*2*5=20, 2*2*7=28, 2*5*7=70
(4組)2*2*2*5=40, 2*2*2*7=56, 2*2*5*7=140
結果、合成数=(2,4,5,7,8,10,14,20,28,35,40,56,70,140)
[e]求めた合成数の561に対する原始根を求める。
pow(2,合成数,561)=(合成数=原子根)=(2=4,4=16,5=32,7=128,8=256,10=463,14=115,
20=67,28=322,35=263,40=1,56=460,70=166,140=67)
pow(2,40,561)=1から、n=561<>p(prime).
(2017/Dec./23, 21:26)
---
[20-1]n=561,原始根分布は、(pow() by python.org)

^^^[a]pow([2-15],560,561)=1?
pow(2,560,561)=1
pow(3,560,561)=375
pow(4,560,561)=1
pow(5,560,561)=1
pow(6,560,561)=375
pow(7,560,561)=1
pow(8,560,561)=1
pow(9,560,561)=375
pow(10,560,561)=1
pow(11,560,561)=154
pow(12,560,561)=375
pow(13,560,561)=1
pow(14,560,561)=1
pow(15,560,561)=375

^^^[b]pow([2-15],40,561)=1?
pow(2,40,561)=1
pow(3,40,561)=441
pow(4,40,561)=1
pow(5,40,561)=67
pow(6,40,561)=441
pow(7,40,561)=67
pow(8,40,561)=1
pow(9,40,561)=375
pow(10,40,561)=67
pow(11,40,561)=220
pow(12,40,561)=441
pow(13,40,561)=1
pow(14,40,561)=67
pow(15,40,561)=375
(2018/01/09, 10:50, touched)
---
[21]n=1105では?=p/or/<>p?
[a]pow(2,1104,1105)=1, pass. n=1105=p?
[b]
@@@:TODO

---
[22]カーマイケル数で、4n+3を探す。
[22-a]A002997 https://oeis.org/A002997
Carmichael numbers: a^(n-1) == 1 (mod n)
  n          a(n)
  1          561
  2        1105
  3        1729
  4        2465
  5        2821
  6        6601
  7        8911
  8      10585
  9      15841
10      29341
...
[22-b]4n+3は?
561=3*11*17, 4n+1, pow(2,560,561)=1
1105=5*13*17, 4n+1, pow(2,1104,1105)=1
1729=7*13*19, 4n+1, pow(2,1728,1729)=1
2465=5*17*29, 4n+1, pow(2,2464,2465)=1
2821=7*13*31, 4n+1, pow(2,2820,2821)=1
6601=7*23*41, 4n+1, pow(2,6600,6601)=1
8911=7*19*67, 4n+3, pow(2,8910,8911)=1 <=check this!
10585=5*29*73, 4n+1, pow(2,10584,10585)=1
15841=7*31*73,4n+1, pow(2,15840,15841)=1
29341=13*37*61, 4n+1, pow(2,29340,29341)=1

[22-c]to check n=8911, as (2^n)-1.
log2(8911+1)=13.12153352,x=0.12153352, pow(2,8910,8911)=1, 8911=4n+3,
(2^12.x)-1=4455.000008, 4455=3^4*5*11, odd, pow(2,4454,4455)=4009, 4455=4n+3,
(2^11.x)-1=2227.000004, 2227=17*131, odd, pow(2,2226,2227)=429, 2227=4n+3,
(2^10.x)-1=1113.000002, 1113=3*7*53, odd, pow(2,1112,1113)=130, 1113=4n+1,
(2^9.x)-1=556.000001, 556=2^2*139, even, pow(2,555,556)=8,
-
(2^8.x)-1=277.5000005
(2^7.x)-1=138.2500003
(2^6.x)-1=68.62500013
(2^5.x)-1=33.81250006
(2^4.x)-1=16.40625003
(2^3.x)-1=7.703125016
(2^2.x)-1=3.351562508
(2^1.x)-1=1.175781254
(2^0.x)-1=0.08789062701

[22-d]pow() : to check 4455 as previous one of n=8911.
pow(2,4455,8911)=6364
pow(3,4455,8911)=8910
pow(4,4455,8911)=1
pow(5,4455,8911)=2813
pow(6,4455,8911)=2547
pow(7,4455,8911)=1540
pow(8,4455,8911)=6364
pow(9,4455,8911)=1
pow(10,4455,8911)=8644
pow(11,4455,8911)=267
pow(12,4455,8911)=8910
pow(13,4455,8911)=8910
pow(14,4455,8911)=7371
pow(15,4455,8911)=6098
-
pow(2,8910,8911)=1
pow(3,8910,8911)=1
pow(4,8910,8911)=1
pow(5,8910,8911)=1
pow(6,8910,8911)=1
pow(7,8910,8911)=1274
pow(8,8910,8911)=1
pow(9,8910,8911)=1
pow(10,8910,8911)=1
pow(11,8910,8911)=1
pow(12,8910,8911)=1
pow(13,8910,8911)=1
pow(14,8910,8911)=1274
pow(15,8910,8911)=1

[22-e]to check pos of pow()=1,  use makePowList(v_base = 2, v_mod = 8911, op_mode = "pow1")
     v_base v_mod  num pow powDiffMod
      1      2  8911       0   1       8910
  199      2  8911   198   1       8910
  397      2  8911   396   1       8910
  595      2  8911   594   1       8910
  793      2  8911   792   1       8910
  991      2  8911   990   1       8910
1189      2  8911 1188   1       8910
1387      2  8911 1386   1       8910
1585      2  8911 1584   1       8910
1783      2  8911 1782   1       8910
1981      2  8911 1980   1       8910
2179      2  8911 2178   1       8910
2377      2  8911 2376   1       8910
2575      2  8911 2574   1       8910
2773      2  8911 2772   1       8910
2971      2  8911 2970   1       8910
3169      2  8911 3168   1       8910
3367      2  8911 3366   1       8910
3565      2  8911 3564   1       8910
3763      2  8911 3762   1       8910
3961      2  8911 3960   1       8910
4159      2  8911 4158   1       8910
4357      2  8911 4356   1       8910
4555      2  8911 4554   1       8910
4753      2  8911 4752   1       8910
4951      2  8911 4950   1       8910
5149      2  8911 5148   1       8910
5347      2  8911 5346   1       8910
5545      2  8911 5544   1       8910
5743      2  8911 5742   1       8910
5941      2  8911 5940   1       8910
6139      2  8911 6138   1       8910
6337      2  8911 6336   1       8910
6535      2  8911 6534   1       8910
6733      2  8911 6732   1       8910
6931      2  8911 6930   1       8910
7129      2  8911 7128   1       8910
7327      2  8911 7326   1       8910
7525      2  8911 7524   1       8910
7723      2  8911 7722   1       8910
7921      2  8911 7920   1       8910
8119      2  8911 8118   1       8910
8317      2  8911 8316   1       8910
8515      2  8911 8514   1       8910
8713      2  8911 8712   1       8910
8911      2  8911 8910   1       8910
---
[23]blank.

@@@@@@
@@@@@@
@@@@@@
[TODO]
---
[7][c],[d]
[16]
[21]
@@@@@@
@@@@@@
@@@@@@
---
end.