(Translated by https://www.hiragana.jp/)
A375543 - OEIS
login
A375543
Sylvester primes. Yet another proof of the infinity of primes.
1
2, 3, 7, 43, 13, 139, 547, 607, 1033, 181, 1987, 73, 2287, 29881, 13999, 17881, 31051, 52387, 67003, 74203, 128551, 352867, 635263, 74587, 1286773, 2271427, 27061, 164299, 20929, 1171, 298483, 1679143, 3229081, 3263443, 120823, 447841
OFFSET
1,1
COMMENTS
Sylvester's sequence can be defined recursively S(n) = S(n-1)*(S(n-1) + 1) for n >= 1 starting S(0) = 1. (A000058(n) = S(n) + 1.)
Since S(n) and S(n) + 1 have no common divisors, it follows that S(n) has at least one more prime factor than S(n-1), and thus by induction, S(n) has at least n distinct prime factors. This simple and constructive form of Euclid's proof of the infinity of primes was formulated by Filip Saidak (see links).
To generate the sequence, select the smallest among the prime factors of S(n) that has not yet been selected. We call the infinite sequence constructed this way the 'Sylvester primes'. The terms, when ordered by size, can be found in A007996; any prime not a Sylvester prime can be located in A096264.
As a procedure, the sequence can hardly be described more clearly than in the Maple program below. Compared to other variants (for example A126263), it has the advantage that the primes generated start relatively small.
LINKS
Chris Caldwell, Filip Saidak's Proof, PrimePages.
Filip Saidak, A New Proof of Euclid's Theorem, Amer. Math. Monthly, Vol. 113, No. 10 (Dec., 2006), pp. 937-938.
EXAMPLE
The generation of the sequence starts:
n, selected, factors of S(n) a(n)
[1] {}, {2} -> 2,
[2] {2}, {2, 3} -> 3,
[3] {2, 3}, {2, 3, 7} -> 7,
[4] {2, 3, 7}, {2, 3, 7, 43} -> 43,
[5] {2, 3, 7, 43}, {2, 3, 7, 13, 43, 139} -> 13.
MAPLE
fact := n -> NumberTheory:-PrimeFactors(n):
SylvesterPrimes := proc(len) local p, d, w, n;
p := 1; d := {}; w := {};
for n from 1 to len do
p := p*(p + 1);
d := fact(p) minus w;
w := w union {min(d)};
od end:
SylvesterPrimes(8);
isSylvesterPrime := proc(p) local s, M;
M := NULL: s := 2:
while not member(s, [M]) do
M := M, s;
s := (s^2 + s) mod p;
if s = 0 then return true fi;
od: false end:
MATHEMATICA
Module[{nmax = 20, a = {}, p = 1, f}, Do[p *= p + 1; f = 2; While[MemberQ[a, f] || !Divisible[p, f], f = NextPrime[f]]; AppendTo[a, f], nmax]; a]
(* Paolo Xausa, Sep 03 2024 *)
PROG
(Python)
from sympy import sieve
from itertools import count, islice
def smallest_new_primefactor(n, pf):
return next(pi for i in count(1) if (pi:=sieve[i]) not in pf and n%pi==0)
def agen(): # generator of terms
p, d, w, pf = 1, set(), set(), set()
while True:
p = p*(p + 1)
m = smallest_new_primefactor(p, w)
w |= {m}
yield m
print(list(islice(agen(), 20)))
# Michael S. Branicky, Sep 02 2024 after Peter Luschny
(SageMath) # Returns the first 24 terms in less than 60 seconds.
def SylvesterPrimes(len: int) -> list[int]:
M: list[int] = []
p = q = 1
for n in range(1, len + 1):
p = p * (p + 1)
pq = p // q
for s in Primes():
if pq % s == 0 and not s in M:
M.append(s)
q = q * s
print(n, s)
break
return M
SylvesterPrimes(24) # Peter Luschny, Sep 05 2024
CROSSREFS
Variants: A126263, A367020.
Sequence in context: A260819 A000945 A261564 * A126263 A323605 A354376
KEYWORD
nonn,more
AUTHOR
Peter Luschny, Sep 02 2024
EXTENSIONS
a(21)-a(31) from Michael S. Branicky, Sep 03 2024
a(32) from Paolo Xausa, Sep 04 2024
a(33)-a(36) from Peter Luschny, Sep 05 2024
STATUS
approved