xxxxxxxxxx
function sieveOfEratosthenes(max) {
let isPrimeNumber = new Array(max + 1).fill(true);
isPrimeNumber[0] = false;
isPrimeNumber[1] = false;
for (let k = 2; k < Math.sqrt(max); k++) {
if (isPrimeNumber[k])
for (n = 2 * k; n <= max; n += k) isPrimeNumber[n] = false;
}
return isPrimeNumber;
}
function setup() {
createCanvas(windowWidth, windowHeight);
background(0);
fill(255);
noStroke();
let step = 12;
let l = Math.floor(( min(width, height)/2 - step ) / step);
let k = 2*l+1;
let isPrimeNumber = sieveOfEratosthenes(k*k);
translate(width/2 - (l+1)*step, height/2 - (l)*step);
for (let y=0; y<k; y++)
for(let x=1; x<=k; x++) {
if (isPrimeNumber[y*k+x])
circle(x*step, y*step, step-2);
else
circle(x*step, y*step, step/4);
}
}
function draw() {
}