Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,28 +0,0 @@
|
|||
with Ada.Text_Io; use Ada.Text_Io;
|
||||
with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
|
||||
|
||||
procedure Lucas_Lehmer_Test is
|
||||
type Ull is mod 2**64;
|
||||
function Mersenne(Item : Integer) return Boolean is
|
||||
S : Ull := 4;
|
||||
MP : Ull := 2**Item - 1;
|
||||
begin
|
||||
if Item = 2 then
|
||||
return True;
|
||||
else
|
||||
for I in 3..Item loop
|
||||
S := (S * S - 2) mod MP;
|
||||
end loop;
|
||||
return S = 0;
|
||||
end if;
|
||||
end Mersenne;
|
||||
Upper_Bound : constant Integer := 64;
|
||||
begin
|
||||
Put_Line(" Mersenne primes:");
|
||||
for P in 2..Upper_Bound loop
|
||||
if Mersenne(P) then
|
||||
Put(" M");
|
||||
Put(Item => P, Width => 1);
|
||||
end if;
|
||||
end loop;
|
||||
end Lucas_Lehmer_Test;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
val isPrime = fn(i) {
|
||||
val isPrime = fn(i number) {
|
||||
i == 2 or i > 2 and
|
||||
not any(series(2 .. i ^/ 2, asconly=true), by=fn x:i div x)
|
||||
}
|
||||
|
||||
val isMersennePrime = fn(p) {
|
||||
val isMersennePrime = fn(p number) {
|
||||
if p == 2: return true
|
||||
if not isPrime(p): return false
|
||||
|
||||
|
|
@ -13,4 +13,4 @@ val isMersennePrime = fn(p) {
|
|||
} == 0
|
||||
}
|
||||
|
||||
writeln join(map(filter(series(2300), by=isMersennePrime), by=fn x:"M{{x}}"), by=" ")
|
||||
writeln join(map(filter(series(50), by=isMersennePrime), by=fn x:"M{{x}}"), delim=" ") # 2300
|
||||
|
|
|
|||
|
|
@ -1,56 +1,54 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #004080;">bool</span> <span style="color: #000000;">full</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span> <span style="color: #000080;font-style:italic;">-- (see extended output below)</span>
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">limit</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">full</span><span style="color: #0000FF;">?</span><span style="color: #000000;">20</span><span style="color: #0000FF;">:</span><span style="color: #000000;">23</span><span style="color: #0000FF;">)</span>
|
||||
with javascript_semantics
|
||||
bool full = true -- (see extended output below)
|
||||
constant limit = iff(full?20:23)
|
||||
|
||||
<span style="color: #008080;">include</span> <span style="color: #004080;">mpfr</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
|
||||
include mpfr.e
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">mersenne</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">p</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">2</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #004600;">true</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #008080;">not</span> <span style="color: #7060A8;">is_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">p</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #004600;">false</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #004080;">mpz</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">:=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">(</span><span style="color: #000000;">4</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">m</span> <span style="color: #0000FF;">:=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">(),</span>
|
||||
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #7060A8;">mpz_ui_pow_ui</span><span style="color: #0000FF;">(</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">mpz_sub_si</span><span style="color: #0000FF;">(</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span> <span style="color: #008080;">to</span> <span style="color: #000000;">p</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #7060A8;">mpz_mul</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">mpz_sub_si</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000080;font-style:italic;">-- mpz_mod(s,s,m)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">mpz_sign</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;"><</span> <span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">mpz_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #7060A8;">mpz_tdiv_r_2exp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">mpz_tdiv_q_2exp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">p</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">mpz_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">r</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #0000FF;">(</span><span style="color: #7060A8;">mpz_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">m</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">>=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #7060A8;">mpz_sub</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">m</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #004080;">bool</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_cmp_si</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">0</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_free</span><span style="color: #0000FF;">({</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function mersenne(integer p)
|
||||
if p = 2 then return true end if
|
||||
if not is_prime(p) then return false end if
|
||||
mpz s := mpz_init(4),
|
||||
m := mpz_init(),
|
||||
r = mpz_init()
|
||||
mpz_ui_pow_ui(m, 2, p)
|
||||
mpz_sub_si(m,m,1)
|
||||
for i=3 to p do
|
||||
mpz_mul(s,s,s)
|
||||
mpz_sub_si(s,s,2)
|
||||
-- mpz_mod(s,s,m)
|
||||
if mpz_sign(s) < 0 then
|
||||
mpz_add(s, s ,m)
|
||||
else
|
||||
mpz_tdiv_r_2exp(r, s, p)
|
||||
mpz_tdiv_q_2exp(s, s, p)
|
||||
mpz_add(s, s, r)
|
||||
end if
|
||||
if (mpz_cmp(s, m) >= 0) then mpz_sub(s, s, m) end if
|
||||
end for
|
||||
bool res = mpz_cmp_si(s,0)=0
|
||||
{s,m,r} = mpz_free({s,m,r})
|
||||
return res
|
||||
end function
|
||||
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">(),</span> <span style="color: #000000;">t1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">t0</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">count</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">mersennes</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">1279</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2203</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2281</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">3217</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">4253</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">4423</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">9689</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">9941</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">11213</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">19937</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">21701</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">23209</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">44497</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">86243</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">110503</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">132049</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">216091</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">756839</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">859433</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1257787</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">1398269</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2976221</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">3021377</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">6972593</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">13466917</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">20996011</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">24036583</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">25964951</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">30402457</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">32582657</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">37156667</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">42643801</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">43112609</span><span style="color: #0000FF;">}</span>
|
||||
atom t0 = time(), t1 = t0
|
||||
integer i=2, j = 1, count = 0
|
||||
constant mersennes = {1279, 2203, 2281, 3217, 4253, 4423, 9689, 9941, 11213, 19937, 21701,
|
||||
23209, 44497, 86243, 110503, 132049, 216091, 756839, 859433, 1257787,
|
||||
1398269, 2976221, 3021377, 6972593, 13466917, 20996011, 24036583,
|
||||
25964951, 30402457, 32582657, 37156667, 42643801, 43112609}
|
||||
|
||||
<span style="color: #008080;">while</span> <span style="color: #000000;">count</span><span style="color: #0000FF;"><</span><span style="color: #000000;">limit</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">mersenne</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">count</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #004080;">string</span> <span style="color: #000000;">e</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t1</span><span style="color: #0000FF;"><</span><span style="color: #000000;">0.1</span><span style="color: #0000FF;">?</span><span style="color: #008000;">""</span><span style="color: #0000FF;">,</span><span style="color: #008000;">", "</span><span style="color: #0000FF;">&</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t1</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"M%d (%d%s)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">count</span><span style="color: #0000FF;">,</span><span style="color: #000000;">e</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #000000;">t1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">full</span> <span style="color: #008080;">or</span> <span style="color: #000000;">i</span><span style="color: #0000FF;"><</span><span style="color: #000000;">1000</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">i</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000000;">i</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">mersennes</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #000000;">j</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"completed in %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)})</span>
|
||||
<!--
|
||||
while count<limit do
|
||||
if mersenne(i) then
|
||||
count += 1
|
||||
string e = iff(time()-t1<0.1?"",", "&elapsed(time()-t1))
|
||||
printf(1,"M%d (%d%s)\n",{i,count,e})
|
||||
t1 = time()
|
||||
end if
|
||||
if full or i<1000 then
|
||||
i += 1
|
||||
else
|
||||
i = mersennes[j]
|
||||
j += 1
|
||||
end if
|
||||
end while
|
||||
printf(1,"completed in %s\n",{elapsed(time()-t0)})
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
function Get-MersennePrime ([bigint]$Maximum = 4800)
|
||||
{
|
||||
[bigint]$n = [bigint]::One
|
||||
|
||||
for ($exp = 2; $exp -lt $Maximum; $exp++)
|
||||
{
|
||||
if ($exp -eq 2)
|
||||
{
|
||||
$s = 0
|
||||
}
|
||||
else
|
||||
{
|
||||
$s = 4
|
||||
}
|
||||
|
||||
$n = ($n + 1) * 2 - 1
|
||||
|
||||
for ($i = 1; $i -le $exp - 2; $i++)
|
||||
{
|
||||
$s = ($s * $s - 2) % $n
|
||||
}
|
||||
|
||||
if ($s -eq 0)
|
||||
{
|
||||
$exp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
Get-MersennePrime | Format-Wide {"{0,4}" -f $_} -Column 4 -Force
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
include Settings
|
||||
-- 23 Aug 2025
|
||||
include Setting
|
||||
numeric digits 5000
|
||||
|
||||
say 'LUCAS-LEHMER TEST - 10 Mar 2025'
|
||||
say 'LUCAS-LEHMER TEST'
|
||||
say version
|
||||
say
|
||||
call LucasLehmer
|
||||
|
|
@ -58,6 +59,4 @@ if Prime(m) then do
|
|||
end
|
||||
return
|
||||
|
||||
include Numbers
|
||||
include Functions
|
||||
include Abend
|
||||
include Math
|
||||
|
|
|
|||
|
|
@ -1,17 +1,14 @@
|
|||
import math.big
|
||||
const (
|
||||
primes = [u32(3), 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
|
||||
import os
|
||||
|
||||
const primes = [u32(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]
|
||||
|
||||
mersennes = [u32(521), 607, 1279, 2203, 2281, 3217, 4253, 4423, 9689,
|
||||
9941, 11213, 19937, 21701, 23209, 44497, 86243, 110503, 132049, 216091,
|
||||
756839, 859433, 1257787, 1398269, 2976221, 3021377, 6972593, 13466917,
|
||||
20996011, 24036583]
|
||||
)
|
||||
const mersennes = [u32(521), 607, 1279, 2203, 2281, 3217, 4253, 4423] // can add more per hardware and time
|
||||
|
||||
fn main() {
|
||||
ll_test(primes)
|
||||
println('')
|
||||
println("")
|
||||
ll_test(mersennes)
|
||||
}
|
||||
|
||||
|
|
@ -20,13 +17,14 @@ fn ll_test(ps []u32) {
|
|||
one := big.one_int
|
||||
two := big.two_int
|
||||
for p in ps {
|
||||
m = one.lshift(p) - one
|
||||
s= big.integer_from_int(4)
|
||||
s = big.integer_from_int(4)
|
||||
m = one.left_shift(p) - one
|
||||
for i := u32(2); i < p; i++ {
|
||||
s = (s*s - two)%m
|
||||
s = (s * s - two) % m
|
||||
}
|
||||
if s.bit_len() == 0 {
|
||||
print("M$p ")
|
||||
os.flush()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
iexpmax = 15
|
||||
n=1
|
||||
out=""
|
||||
For iexp = 2 To iexpmax
|
||||
If iexp = 2 Then
|
||||
s = 0
|
||||
Else
|
||||
s = 4
|
||||
End If
|
||||
n = (n + 1) * 2 - 1
|
||||
For i = 1 To iexp - 2
|
||||
s = (s * s - 2) Mod n
|
||||
Next
|
||||
If s = 0 Then
|
||||
out=out & "M" & iexp & " "
|
||||
End If
|
||||
Next
|
||||
Wscript.echo out
|
||||
Loading…
Add table
Add a link
Reference in a new issue