The sieve starts by setting every entry in a large array "A"[] of bytes to zero. For each "p", solve the quadratic equation mod "p" to get two roots "α" and "β", and then add an approximation to log("p") to every entry for which "y"("x") = 0 mod "p" ... that is, "A"["kp" + "α"] and "A"["kp" + "β"]. It is also necessary to solve the quadratic equation modulo small powers of "p" in order to recognise numbers divisible by small powers of a factor-base prime.