uint64_t range = 1000; int x = 0; int y = 0; uint64_t loop = 0; uint64_t shift = 0; for (uint64_t i = 1; i < range * range; i++) { std::cout<<x<<" "<<y<<" "<<i<<std::endl; if (i == (loop * 2 + 1) * (loop * 2 + 1)) { loop++; shift = 0; x++; } else { shift++; if (shift >= loop * 6) { x++; } else if (shift >= loop * 4) { y--; } else if (shift >= loop * 2) { x--; } else { y++; } } }
素数だけ描くとこうなる。