int main() { int i,k,l,flag; char K[105]; freopen("poj2635.txt","r",stdin); freopen("poj2635ans.txt","w",stdout); GetPrimeList(); while (scanf("%s%d",K,&l) && l) { memset(num,0,sizeof(num)); cnt=0;k=1; for (i=strlen(K)-1;i>=0;i--) { if (k==1000000000) { k=1; cnt++; } num[cnt]+=(K[i]-'0')*k; k*=10; } flag=0; for (i=0;prime[i]<l;i++) if (MOD(prime[i])==0) { flag=1; break; } if (flag) printf("BAD %d\n",prime[i]); else printf("GOOD\n"); } return 0; }
int GetTheCountOfCircularPrimesBelow1000000() { primeCount = GetPrimeList(limit, primeList); int result = 4; for(int i = 4; i < primeCount; ++i) if(IsRotatePrime(primeList[i])) ++result; return result; }
int GetThePrimeBelow1000000CanBeWrittenAsTheSumOfTheMostConsecutivePrimes() { int* buffer = new int[COUNT]; int realCount = GetPrimeList(COUNT, buffer); int result = 0, maxLen = 0; for(int i = 0; i < realCount - 1; ++i) { buffer[i + 1] += buffer[i]; if(buffer[i + 1] >= COUNT) { realCount = i; break; } } for(int i = realCount; i >= 0; --i) { int temp = buffer[i]; if(IsPrime(temp)) { if(i > maxLen) { maxLen = i; result = temp; } } else for(int j = 0; j < realCount; ++j) { if(IsPrime(temp - buffer[j])) { if(i - j - 1 > maxLen) { maxLen = i - j - 1; result = temp - buffer[j]; } } } } delete []buffer; return result; }