![]() | 1 | initial version |
Homeworks tend to lose interest after some weeks, because solutions are provided... So i was waiting some time...
Here is a piece of code, which - given a lower bound k, say k=70, - is searching for polynomials of the shape f(X)=X2+aX+p ,
The tuple (p,q) determines, a, so also the polynomial f, and we check in all cases if the needed values f(0)=p, f(1)=q, f(2), ... , f(k) are prime numbers. If yes, we record this polynominal. The search is done by searching in a fixed range PRIMES
for the first two primes p,q.
Code:
FIRST_TWO_PRIMES_UPPER_BOUND = 10000
var('X');
k = 70
count = 0
pols = []
PRIMES = list(primes(FIRST_TWO_PRIMES_UPPER_BOUND))
for p in PRIMES:
count += 1
if count % 100 == 0:
print(f"count = {count} :: checking prime {p}...")
# we are searching for a polynomial of the shape x^2 + ax + p, a>0, with prime values on [0..k]
for q in PRIMES:
q_works = True # so far
a = q - p - 1
for j in [2..k]:
if not ZZ(j^2 + a*j + p).is_prime():
q_works = False
# print(p, 'FAILS FOR', q, a, j, (j^2 + a*j + p).factor())
break
if q_works:
pol = X^2 + a*X + p
print(f"!!! Found polynomial: {pol} !!!")
pols.append(pol)
if pols:
print(f"SOLUTIONS FOR k = {k}:")
for pol in pols:
print(pol)
else:
print(f"NO SOLUTIONS FOR k = {k}:")
And here are the found solutions for k=70:
SOLUTIONS FOR k = 70:
X^2 - 61*X + 971
X^2 - 63*X + 1033
X^2 - 65*X + 1097
X^2 - 67*X + 1163
X^2 - 69*X + 1231
X^2 - 71*X + 1301
X^2 - 73*X + 1373
X^2 - 75*X + 1447
X^2 - 77*X + 1523
X^2 - 79*X + 1601
The last polynomial, X2−79X+1601=X(X−79)+1601 takes the same values in the points j and 79−j, so we obtain prime values (with repetitions) even for all j from 0 to 79.