物理の駅 by onsanai

Physics-station 研究で日々感じたことを忘れないための備忘録

螺旋を描くためのC++ソースコード

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++; }
    }
}

素数だけ描くとこうなる。

f:id:onsanai:20190321180707p:plain
ウラムの螺旋

参照 ウラムの螺旋 - Wikipedia