#include <stdio.h>
void print(int n)
{
}
void primes_1000()
{
// the 2-3-5-7 wheel
int wh[48] = {10,2,4,2,4,6,2,6,4,2,4,6,6,2,6,4,2,6,4,6,8,4,2,4,
2,4,8,6,4,6,2,4,6,2,6,6,4,2,4,6,2,6,4,2,4,2,10,2};
// core primes' multiples each with its pointer into the wheel
int m[7][4] = { {1,11,11,11*11}, {2,13,13,13*13}, {3,17,17,17*17},
{4,19,19,19*19}, {5,23,23,23*23}, {6,29,29,29*29},
{7,31,31,31*31} }; // 23*23 = 529
int i=1, p=11, k=0;
print(2); print(3); print(5); print(7);
do {
// the smallest duplicate multiple is 121*13, ==> no dups below 1000!
for( k=0; k < 7; ++k) {
if ( p == m[k][3] ) {
m[k][2] += wh[ m[k][0]++ ]; m[k][3] = m[k][1] * m[k][2];
m[k][0] %= 48; break;
}
}
if (k == 7) print(p);
p += wh[i++]; i %= 48;
} while ( p < 1000 );
}
int main(void) {
primes_1000();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHByaW50KGludCBuKQp7CglwcmludGYoIiVkICIsIG4pOwp9Cgp2b2lkIHByaW1lc18xMDAwKCkKewogICAvLyB0aGUgMi0zLTUtNyB3aGVlbAogICBpbnQgd2hbNDhdID0gezEwLDIsNCwyLDQsNiwyLDYsNCwyLDQsNiw2LDIsNiw0LDIsNiw0LDYsOCw0LDIsNCwKICAgICAgICAgICAgICAgICAgMiw0LDgsNiw0LDYsMiw0LDYsMiw2LDYsNCwyLDQsNiwyLDYsNCwyLDQsMiwxMCwyfTsKCiAgIC8vIGNvcmUgcHJpbWVzJyBtdWx0aXBsZXMgZWFjaCB3aXRoIGl0cyBwb2ludGVyIGludG8gdGhlIHdoZWVsCiAgIGludCBtWzddWzRdID0geyB7MSwxMSwxMSwxMSoxMX0sIHsyLDEzLDEzLDEzKjEzfSwgezMsMTcsMTcsMTcqMTd9LAogICAgICAgICAgICAgICAgICAgezQsMTksMTksMTkqMTl9LCB7NSwyMywyMywyMyoyM30sIHs2LDI5LDI5LDI5KjI5fSwKICAgICAgICAgICAgICAgICAgIHs3LDMxLDMxLDMxKjMxfSB9OyAgICAvLyAyMyoyMyA9IDUyOSAKICAgaW50IGk9MSwgcD0xMSwgaz0wOwoKICAgcHJpbnQoMik7IHByaW50KDMpOyBwcmludCg1KTsgcHJpbnQoNyk7CiAgIGRvIHsKICAgICAgLy8gdGhlIHNtYWxsZXN0IGR1cGxpY2F0ZSBtdWx0aXBsZSBpcyAxMjEqMTMsID09PiBubyBkdXBzIGJlbG93IDEwMDAhCiAgICAgIGZvciggaz0wOyBrIDwgNzsgKytrKSB7CiAgICAgICAgIGlmICggcCA9PSBtW2tdWzNdICkgewogICAgICAgICAgICBtW2tdWzJdICs9IHdoWyBtW2tdWzBdKysgXTsgIG1ba11bM10gPSBtW2tdWzFdICogbVtrXVsyXTsKICAgICAgICAgICAgbVtrXVswXSAlPSA0ODsgICBicmVhazsKICAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChrID09IDcpIHByaW50KHApOyAgCiAgICAgIHAgKz0gd2hbaSsrXTsgICBpICU9IDQ4OwogICB9IHdoaWxlICggcCA8IDEwMDAgKTsKfQoKaW50IG1haW4odm9pZCkgewogICAgcHJpbWVzXzEwMDAoKTsKCXJldHVybiAwOwp9