KEYWORDS: Irregular Primes, Bernoulli numbers, Euler numbers, computing modulo p, Akiyama-Tanigawa algorithm, Ernst Eduard Kummer, Thomas Mautsch, OEIS A000928, OEIS A120337, OEIS A128197. "The pioneering mathematician Kummer, over the period 1847-1850, used his profound theory of cyclotomic fields to establish a certain class of primes called 'regular' primes. ... It is known that there exist an infinity of irregular primes; in fact it is a plausible conjecture that only an asymptotic fraction 1/Sqrt(e) ~ 0.6 of all primes are regular." [Ribenboim, cited after OEIS A000928.] The Computation of Irregular Primes. (1) Bernoulli Irregular Primes Definition: A prime number p is called B-regular if none of the Bernoulli numbers with even indices up to (p-3), B_2, B_4, B_6, ..., B_(p-3), is divisible by p. Computing the list of B-irregular primes efficiently is not a trivial task. To keep things simple, I wanted to have a routine which does fairly well in a range up to, say, n = 1000 or n = 2000. Below I give such a routine, written in Maple. However, I did not use any computer algebra except using a precomputed list of primes up to n. ============================================================ BIrregularPrimes := proc(len) local t,m,j,F,P,k,lenP; t := array(0..len): t[0] := 1; F := {}; k := 1; P := select(isprime, [$2..len]); lenP := nops(P); for m from 2 to len do t[m - 1] := 1 / m; for j from m-1 by - 1 to 1 do t[j - 1] := j * (t[j - 1] - t[j]); od; if irem(m, 2) = 0 then next fi; if iquo(m, 2) = P[k] then k := k+1 fi; for j from k to lenP do if irem(numer(t[0]),P[j]) = 0 then F := F union {P[j]} fi; od; od; F end: ----------------------------------------------------------- t:=time(): BIrregularPrimes(n): time()-t; %%; nops(%); n=1000 -> 282 seconds, (64 IPs), n=2000 -> 4331 seconds, (121 IPs). ============================================================ I published this routine in the newsgroup sci.math.symbolic and wrote: "I would like to learn more efficient ways to compute irregular primes. Any improvements, different implementations or algorithms are highly appreciated." And I got a very fine answer from Thomas Mautsch: "I think the basic problem about your program is that you first calculate the Bernoulli numbers directly, and Bernoulli numbers become very quickly very large. It might be better to do this calculation modulo p separately for each prime number, instead of calculating huge Bernoulli numbers and only reducing the result modulo primes afterwards." And here is the suggestion of Thomas: =============================================================== isBIrregular := proc(p) local a,b,n,ah,half,quarter; a := [1]; b:=[1]; half := iquo(p,2); quarter := -half/2 mod p; for n from 1 to half-1 do ah := a[1]*quarter/n mod p; a := [ah / (n-half) mod p, a[]]; ah - add(b[i]*a[i], i=1..n) mod p; if % = 0 then return true else b := [b[],%] end if; end do: false end proc: BIrregPrimes := proc(len) local p,F; p := 3; F := NULL; while p <= len do if isBIrregular(p) then F := F,p end if; p := nextprime(p) end do: F end proc: ----------------------------------------------------------- t:=time(): BIrregPrimes(n): time()-t; %%; nops([%]); n=1000 -> 8 seconds, (64 IPs), n=2000 -> 59 seconds, (121 IPs). =============================================================== I really like the solution of Thomas, a programming pearl! And it is fast! What a summer for good old Kummer! It took him almost 20 years to find the first 10 or so. Thanks a lot, Thomas! Next is a table of Bernoulli irregular primes up to len = 2000. =============================================================== [ 37, 59, 67, 101, 103, 131, 149, 157, 233, 257, 263, 271, 283, 293, 307, 311, 347, 353, 379, 389, 401, 409, 421, 433, 461, 463, 467, 491, 523, 541, 547, 557, 577, 587, 593, 607, 613, 617, 619, 631, 647, 653, 659, 673, 677, 683, 691, 727, 751, 757, 761, 773, 797, 809, 811, 821, 827, 839, 877, 881, 887, 929, 953, 971, 1061, 1091, 1117, 1129, 1151, 1153, 1193, 1201, 1217, 1229, 1237, 1279, 1283, 1291, 1297, 1301, 1307, 1319, 1327, 1367, 1381, 1409, 1429, 1439, 1483, 1499, 1523, 1559, 1597, 1609, 1613, 1619, 1621, 1637, 1663, 1669, 1721, 1733, 1753, 1759, 1777, 1787, 1789, 1811, 1831, 1847, 1871, 1877, 1879, 1889, 1901, 1933, 1951, 1979, 1987, 1993, 1997] ================================================================ (2) Euler Irregular Primes Definition: A prime p is Euler-irregular (E-irregular) iff it divides an Euler number E(2n) with 0< 2n <p-1. The following Maple procedure computes Bernoulli irregular primes as well as Euler irregular primes. IrregularPrimes(100,B); # Computes Bernoulli irregular primes IrregularPrimes(100,E); # Computes Euler irregular primes ------------------------------------------------------------ IrregularPrimes := proc(len,typ) local t,m,j,F,eg,bg,p,maxp; eg := n -> (-1)^iquo(n-1,4)*2^iquo(1-n,2)*ceil((n mod 4)/3); bg := n -> 1/n; t := array(0..len): t[0] := 1; F := {}; for m from 2 to len do t[m - 1] := `if`(typ = B, bg(m), eg(m)); for j from m - 1 by - 1 to 1 do t[j - 1] := j * (t[j - 1] - t[j]); od; if irem(m, 2) = 0 then next fi; p := nextprime(m); maxp := min(abs(t[0]), len); while p <= maxp do if abs(t[0]) mod p = 0 then print(typ[m-1], p); F := F union {p} fi; p := nextprime(p); od; od; F end: ------------------------------------------------------------ The only difference in the computation depending on the 'typ' is the call of bg(m) and eg(m) respectively in the sixth line. Next is a table of Euler irregular primes up to len = 2000. ============================================================ [19, 31, 43, 47, 61, 67, 71, 79, 101, 137, 139, 149, 193, 223, 241, 251, 263, 277, 307, 311, 349, 353, 359, 373, 379, 419, 433, 461, 463, 491, 509, 541, 563, 571, 577, 587, 619, 677, 691, 709, 739, 751, 761, 769, 773, 811, 821, 877, 887, 907, 929, 941, 967, 971, 983,1013,1019,1031,1039,1049, 1051,1069,1151,1163,1187,1223,1229,1231,1277,1279,1283,1291, 1307,1319,1361,1381,1399,1409,1423,1427,1429,1439,1447,1453, 1523,1531,1559,1583,1601,1621,1637,1663,1693,1697,1723,1733, 1759,1787,1801,1831,1867,1873,1877,1879,1889,1901,1907,1931, 1933,1951,1987,1993,1997] ============================================================ (3) Weak and Strong Irregular Primes We say a prime is weak irregular iff it is Bernoulli irregular or Euler irregular. 19, 31, 37, 43, 47, 59, 61, 67, 71, 79, 101, 103, 131, 137, 139, 149, 157, 193, 223, 233, 241, 251, 257, 263, 271, 277, 283, 293, 307, 311, 347, 349, 353, 359, 373, 379, 389, 401, 409, 419, 421, 433, 461, 463, 467, 491, 509, 523, 541, 547, 557, 563, 571, 577, 587, 593, 607, 613, 617, 619, 631, 647, 653, 659, 673, 677, 683, 691, 709, 727, 739, 751, 757, 761, 769, 773, 797, 809, 811, 821, 827, 839, 877, 881, 887, 907, 929, 941, 953, 967, 971, 983, 1013, 1019, 1031, 1039, 1049, 1051, 1061, 1069, 1091, 1105, 1117, 1129, 1151, 1153, 1163, 1187, 1193, 1201, 1217, 1223, 1229, 1231, 1237, 1277, 1279, 1283, 1291, 1297, 1301, 1307, 1319, 1327, 1361, 1367, 1381, 1399, 1409, 1423, 1427, 1429, 1439, 1447, 1453, 1483, 1499, 1523, 1531, 1559, 1583, 1597, 1601, 1609, 1613, 1619, 1621, 1637, 1663, 1669, 1693, 1697, 1721, 1723, 1729, 1733, 1753, 1759, 1777, 1787, 1789, 1801, 1811, 1831, 1847, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1931, 1933, 1951, 1979, 1987, 1993, 1997. We say a prime is strong irregular iff it is Bernoulli irregular and Euler irregular. 67, 101, 149, 263, 307, 311, 353, 379, 433, 461, 463, 491, 541, 577, 587, 619, 677, 691, 751, 761, 773, 811, 821, 877, 887, 929, 971, 1151, 1229, 1279, 1283, 1291, 1307, 1319, 1381, 1409, 1429, 1439, 1523, 1559, 1621, 1637, 1663, 1733, 1759, 1787, 1831, 1877, 1879, 1889, 1901, 1933, 1951, 1987, 1993, 1997. External links: [1] http://primes.utm.edu/top20/page.php?id=26 [2] http://primes.utm.edu/top20/page.php?id=25 [3] http://www.ams.org/mcom/2007-76-257/S0025-5718-06-01887-4/home.html