|
PROG
|
(PARI) isok(v, vd, nb, k) = {if (vecsearch(vd, numdiv(k)), return (0)); for (j=1, nb, if (gcd(k, v[j]) != 1, return (0)); ); 1; }
findk(v, nb) = {my(k = 1); my(vd = vecsort(vector(nb, j, numdiv(v[j])), , 8)); while (!isok(v, vd, nb, k), k++); k; }
lista(nn) = {va = vector(nn); print1(va[1] = 1, ", "); for (n=2, nn, k = findk(va, n-1); print1(va[n] = k, ", "); ); } \\ Michel Marcus, Feb 25 2016
(Python)
from math import gcd
from sympy import divisor_count
from itertools import count, islice
def agen(): # generator of terms
alst, d = [1], {1}
while True:
yield alst[-1]
d.add(divisor_count(alst[-1]))
k = alst[-1] + 1
while any(gcd(ai, k)!=1 for ai in alst) or divisor_count(k) in d:
k += 1
alst.append(k)
|