#include <stdio.h>
#include<math.h>
const int MAX = 100000000 ;
const int LMT = 10000 ;
#define ifcV(x) (flag[x>>6]&(1<<((x>>1)&31)))
#define iscV(x) (flag[x>>6]|=(1<<((x>>1)&31)))
int flag[ 100000000 >> 6 ] ;
long int a[ 5000010 ] , total;
void seive( )
{
long int i, j, count= 1 ;
for ( i= 3 ; i< LMT; i= i+ 2 )
{
if ( ! ifcV( i) )
{
for ( j= i* i; j<= MAX; j+= 2 * i) //Here increment by 2*i bcoz we are considering only odd numbers.In normal seive we consider all no.s so there we increment by i
iscV( j) ;
}
}
a[ 0 ] = 2 ;
for ( i= 3 ; i<= MAX&& count< 5000003 ; i+= 2 )
{
if ( ! ifcV( i) )
a[ count++ ] = i;
}
total= count;
}
int BS( int st, int fn, int val)
{
int mid;
while ( st <= fn)
{
if ( val < a[ st] ) return st- 1 ;
if ( val > a[ fn] ) return fn;
mid = ( st+ fn) / 2 ;
if ( val == a[ mid] ) return mid;
else if ( val < a[ mid] ) fn = mid- 1 ;
else st = mid+ 1 ;
}
return total- 1 ;
}
int main( void ) {
seive( ) ;
while ( 1 )
{ int x;
int i;
double ans;
if ( x== 0 )
return 0 ;
i= BS( 0 , total- 1 , x) ;
ans
= ( ( i
- x
/ log ( x
) ) / i
) * 100.0 ;
if ( ans< 0 )
ans= - ans;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlPG1hdGguaD4KY29uc3QgaW50IE1BWCA9IDEwMDAwMDAwMDsKY29uc3QgaW50IExNVCA9IDEwMDAwOwojZGVmaW5lIGlmY1YoeCkgIChmbGFnW3g+PjZdJigxPDwoKHg+PjEpJjMxKSkpCiNkZWZpbmUgaXNjVih4KSAgKGZsYWdbeD4+Nl18PSgxPDwoKHg+PjEpJjMxKSkpCmludCBmbGFnWzEwMDAwMDAwMD4+Nl07CmxvbmcgaW50IGFbNTAwMDAxMF0sdG90YWw7CnZvaWQgc2VpdmUoKQoJewoJCWxvbmcgaW50IGksaixjb3VudD0xOwoJCWZvcihpPTM7aTxMTVQ7aT1pKzIpCgkJewoJCQlpZighaWZjVihpKSkKCQkJewoJCQkJZm9yKGo9aSppO2o8PU1BWDtqKz0yKmkpLy9IZXJlIGluY3JlbWVudCBieSAyKmkgYmNveiB3ZSBhcmUgY29uc2lkZXJpbmcgb25seSBvZGQgbnVtYmVycy5JbiBub3JtYWwgc2VpdmUgd2UgY29uc2lkZXIgYWxsIG5vLnMgc28gdGhlcmUgd2UgaW5jcmVtZW50IGJ5IGkKCQkJCQlpc2NWKGopOwoJCQl9CgkJfQoJCQoJCWFbMF09MjsKCQlmb3IoaT0zO2k8PU1BWCYmY291bnQ8NTAwMDAwMztpKz0yKQoJCQl7CgkJCQlpZighaWZjVihpKSkKCQkJCWFbY291bnQrK109aTsKCQkJfQoJCQl0b3RhbD1jb3VudDsKCX0KCQppbnQgQlMoaW50IHN0LCBpbnQgZm4sIGludCB2YWwpCnsKICAgIGludCBtaWQ7CiAgICB3aGlsZShzdCA8PSBmbikKICAgIHsKICAgICAgICBpZih2YWwgPCBhW3N0XSkgcmV0dXJuIHN0LTE7CiAgICAgICAgaWYodmFsID4gYVtmbl0pIHJldHVybiBmbjsKICAgICAgICBtaWQgPSAoc3QrZm4pIC8gMjsKICAgICAgICBpZih2YWwgPT0gYVttaWRdKSByZXR1cm4gbWlkOwogICAgICAgIGVsc2UgaWYodmFsIDwgYVttaWRdKSBmbiA9IG1pZC0xOwogICAgICAgIGVsc2Ugc3QgPSBtaWQrMTsKICAgIH0KICAgIHJldHVybiB0b3RhbC0xOwp9CmludCBtYWluKHZvaWQpIHsKCQoJc2VpdmUoKTsKCXdoaWxlKDEpCgl7aW50IHg7CglpbnQgaTsKCWRvdWJsZSBhbnM7CglzY2FuZigiJWQiLCZ4KTsKCWlmKHg9PTApCglyZXR1cm4gMDsKCWk9QlMoMCwgdG90YWwtMSwgeCk7CgkKCWFucz0oKGkteC9sb2coeCkpL2kpKjEwMC4wOwoJCgkKCWlmKGFuczwwKQoJYW5zPSAtIGFuczsKCQoJCXByaW50ZigiJS4xbGZcbiIsYW5zKTsKCX0KCQoJCn0K