login
A371024
a(n) is the least prime p such that p + 4*k*(k+1) is prime for 0 <= k <= n-1 but not for k=n.
2
2, 3, 29, 5, 23, 269, 272879, 149, 61463, 929, 7426253, 2609, 233, 59
OFFSET
1,1
COMMENTS
a(15) > 3277860277, a(16) > 3103623446, a(17) > 2853255995,
a(18) = 653, a(19) > 2480173428, a(20) > 2058783580, a(21) > 1894529774, a(22) > 1896261075, a(23) > 1836831342, a(24), ..., a(100) > 15000000.
Other than a(1)-a(14) and a(18), no terms < 24870000007. - Michael S. Branicky, Apr 12 2024
From David A. Corneth, Apr 12 2024: (Start)
Using remainders mod q we can restrict the search. For example for a(15) a term can only be 2, 3 or 5 (mod 7). Or maybe 7 itself. If a(15) = p == 1 (mod 7) then for k = 3 we have q + 4*3*(3+1) == 0 mod 7. Similarily number 0, 4 and 6 (mod 7) produce a multiple of 7 where they should not.
Doing so for various primes mod q we can reduce the number of remainders and with that the search space by combining the possible remainders using the Chinese Remainder Theorem (CRT).
So the possible remainders mod 2 are 1. The possible remainders mod 3 are 2. Using the CRT, a number of the form 1 (mod 2) and 2 (mod 3) simultaneously is of the form 5 (mod 6).
a(15) > 2.3*10^13 if it exists. (End)
MAPLE
f:= proc(p) local k;
for k from 1 while isprime(p+k*(k+1)*4) do od:
k
end proc:
A:= Vector(12): count:= 0:
for i from 1 while count < 12 do
v:= f(ithprime(i));
if A[v] = 0 then count:= count+1; A[v]:= ithprime(i) fi
od:
convert(A, list);
MATHEMATICA
Table[p=1; m=4; Monitor[Parallelize[While[True, If[And[MemberQ[PrimeQ[Table[p+m*k*(k+1), {k, 0, n-1}]], False]==False, PrimeQ[p+m*n*(n+1)]==False], Break[]]; p++]; p], p], {n, 1, 10}]
PROG
(PARI) isok(p, n) = for (k=0, n-1, if (! isprime(p + 4*k*(k+1)), return(0))); return (!isprime(p + 4*n*(n+1)));
a(n) = my(p=2); while (!isok(p, n), p=nextprime(p+1)); p; \\ Michel Marcus, Mar 12 2024
(Python)
from sympy import isprime, nextprime
from itertools import count, islice
def f(p):
k = 1
while isprime(p+4*k*(k+1)): k += 1
return k
def agen(verbose=False): # generator of terms
adict, n, p = dict(), 1, 1
while True:
p = nextprime(p)
v = f(p)
if v not in adict:
adict[v] = p
if verbose: print("FOUND", v, p)
while n in adict:
yield adict[n]; n += 1
print(list(islice(agen(), 14))) # Michael S. Branicky, Apr 12 2024
CROSSREFS
Sequence in context: A206591 A003017 A096580 * A351693 A324941 A028868
KEYWORD
nonn,more
AUTHOR
STATUS
approved