自己写的,留着以后做求质数表的和高精度除法的模板。
}
}
}
int divid(int t,int* big_num,int end)//高精度除法,返回余数 这里是1000进制
{
int left=0;
for(int i=0;i<end;i++)
{
left=left*1000+big_num[i];
left=left%t;
}
return left;
}
int translate(char *str,int* int_array)//输入字符串,转换成int[]存储的大数,这里用的1000进制,返回int[]末端的index
{
int len=strlen(str);
int k,temp,K_index;
k=len%3;
K_index=temp=0;
for(int i=0;i<k;i++)
{
temp=temp*10;
temp+=str[i]-'0';
}
if(temp) int_array[K_index++]=temp;
for(int i=k;i<len;i=i+3)
{
temp=0;
for(int j=0;j<3;j++)
{
temp=temp*10;
temp+=str[i+j]-'0';
}
int_array[K_index++]=temp;
}
return K_index;
}
int main()
{
prime(isprime,1000005);
char temp[105];
while(scanf("%s%d",temp,&L)&&L)
{
int K_end=translate(temp,K);
int dd;
for(dd=2;dd<L;dd++)
{
if(isprime[dd]&&!divid(dd,K,K_end)) break;
}
if(dd>=L) printf("GOOD/n");
else printf("BAD %d/n",dd);
}
return 0;
}