non repeating 6-digit PRNG

JavaScript

const p = 1000003;

function permuteQPR(x) {
	const residue = x * x % p;
  return (x <= p/2) ? residue : p - residue;
}

function next() {
	return permuteQPR((permuteQPR(m_index++) + m_intermediateOffset) ^ 0x5bf03635);
};

const seedBase = 123456;
const seedOffset = 44;
m_index = permuteQPR(permuteQPR(seedBase) + 0x682f0161);
m_intermediateOffset = permuteQPR(permuteQPR(seedOffset) + 0x46790905);
for(i=0;i<20;i++) {
	document.body.innerHTML += ('000000' + next()).substr(-6) + "<br>";
}