sure! you pick numbers that would form a valid 6tuple modulo each prime and then use the Chinese Remainder Theorem to get your remainder modulo your primorial (for example 1 mod 2, and 1 mod 3 gives you 1 mod 6). When numbers get larger, you'll have to do some trial and error in order to have your number fit in 32bits
If I'm reading this correctly, I do it (not dynamically, but the static program I use to do it) by a quick recursive generator. Pseudocode for clarity, not quite actual mpz names:
primorial = 2*3*5*7;
next_prime = 11;
polynomial = [7];
max_size = 10000;
for i = 0 ... #Pn {
polynomial = add_to_poly(polynomial, next_prime, primorial, max_size);
primorial *= next_prime
mpz_nextprime(next_prime);
}
add_to_polynomail(cur_poly, next_prime, primorial, max_size):
for i = 0 .. next_prime {
for j = 0 ... sizeof(cur_poly) and sizeof(new_poly) <= max_size{
candidate = (i*primorial) + cur_poly[j]
new_poly += candidate if candidate not divisible by next_prime at any of its six positions
}
}
}
It's silly fast if you make the not divisible test fast (advance to candidate by using a pre-computed inverse divisor). A single thread can generate 7038807 valid offsets for the 33rd primorial in about 6 seconds. Which is probably enough.