#include <stdio.h>
#include <conio.h>
#include <math.h>
int a[100000];
int q[100000];
int p(int);
int main()
{
int n;
_asm mov n,10000;
printf("P(%d) = %d\n", n, p(n));
__asm call getch;
return 0;
}
int p(int k)
{
int i,j,dsp;
double n = 2 * (k + 1) * log(k + 1);
__asm push eax;
for(i = 2;i <= sqrt(n);i++)
{
for(j = 2;j <= (n / i);j++)
{
dsp = i * j;
__asm mov eax,dsp;
__asm mov [a + 4 * eax],1;
}
}
__asm pop eax;
__asm mov j,0;
__asm mov i,2;
__asm push ebx;
__asm push eax;
while((i <= n) * (j != k))
{
if(a[i] == 0)
{
__asm mov ebx,j;
__asm mov eax,i;
__asm mov [q + 4 * ebx],eax;
__asm inc j;
}
__asm inc i;
}
__asm pop eax;
__asm pop ebx;
__asm dec k;
return q[k];
}