#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int len ,*data;
char panduan[100097];
int ready(int *buff)
{
int i , j;
int *t =buff;
for (i = 2;i< 100000;i++)
{
int flag = 0;
for ( j = 2; j<=sqrt(i);j++)
if ( i%j == 0)
{
flag =1; break;
}
if (!flag)
{
*buff++ = i;
//找出本范围内的所有的质数
panduan[i%100097]=1;
}
}
return buff -t; //最后一个质数的下标
}
void test(int n)
{
int i = 0;
for (i = 0;i<len;i++)
{
if (panduan[n%100097])
{
printf("%d\n",n);
return;
}
if (n%data[i]== 0)
{
printf("%d*",data[i]);
n/=data[i];
break;
}
}
test(n);
}
int main()
{
memset(panduan,0,sizeof(panduan));
data =(int*)malloc(4*100000);
len =ready(data);
test(100004);
//test(18);
while(1);
return 0;
}