#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NUM 600851475143
void sieve(int *table, int square);
int main(void) {
int *table, square;
long long i;
square
= sqrt((double ) NUM
); table
= (int *) malloc( ( square
+ 1 ) * sizeof(int));
for(i = 0; i <= square; i++)
table[i] = 1;
sieve(table, square);
for(i = square; i >= 2; i--) {
if( !(NUM % i) && table[i] == 1) {
return 0;
}
}
return 0;
}
void sieve(int *table, int square)
{
int i, j;
table[0] = table[1] = 0;
for(i = 2; i <= square; i++) {
for(j = 2 * i; j <= square; j += i)
table[j] = 0;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KCiNkZWZpbmUgTlVNCQk2MDA4NTE0NzUxNDMKCnZvaWQgc2lldmUoaW50ICp0YWJsZSwgaW50IHNxdWFyZSk7CgppbnQgbWFpbih2b2lkKQl7CiAgaW50ICp0YWJsZSwgc3F1YXJlOwogIGxvbmcgbG9uZyBpOwoKICBzcXVhcmUgPSBzcXJ0KChkb3VibGUgKSBOVU0pOwogIHRhYmxlID0gKGludCAqKSBtYWxsb2MoICggc3F1YXJlICsgMSApICogc2l6ZW9mKGludCkpOwoKICBmb3IoaSA9IDA7IGkgPD0gc3F1YXJlOyBpKyspCiAgICB0YWJsZVtpXSA9IDE7CgogIHNpZXZlKHRhYmxlLCBzcXVhcmUpOwoKICBmb3IoaSA9IHNxdWFyZTsgaSA+PSAyOyBpLS0pCXsKICAgIGlmKCAhKE5VTSAlIGkpICYmIHRhYmxlW2ldID09IDEpCXsKICAgICAgcHJpbnRmKCIlbGxkXG4iLCBpKTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKICBwcmludGYoIlxuIik7CiAgcmV0dXJuIDA7Cn0KCnZvaWQgc2lldmUoaW50ICp0YWJsZSwgaW50IHNxdWFyZSkKewogIGludCBpLCBqOwoKICB0YWJsZVswXSA9IHRhYmxlWzFdID0gMDsKCiAgZm9yKGkgPSAyOyBpIDw9IHNxdWFyZTsgaSsrKQl7CiAgICBmb3IoaiA9IDIgKiBpOyBqIDw9IHNxdWFyZTsgaiArPSBpKQogICAgICB0YWJsZVtqXSA9IDA7CiAgfQp9