/*1231. The Embarrassed Cryptography(求两个素数积)*/
#include<stdlib.h>
#include<string>
#include<math.h>
#include<iostream>
#include<memory.h>
using namespace std;
string Key;
long long L;
const long long MAX = 1000000;
long long prime[100000];
bool primeBool[MAX+1];
long long searchprime(){
memset(primeBool, true, sizeof(primeBool));
primeBool[1] = false;
for(long long i=2; i<= (int)floor(sqrt((double)MAX)); i++){
if(primeBool[i]){
long long j = i*2;
while(j <= MAX){
primeBool[j] = false;
j += i;
}
}
}
long long sizeOfPrime = 0;
for(long long i = 1; i <= MAX; i++){
if(primeBool[i]){
sizeOfPrime++;
prime[sizeOfPrime] = i;
}
}
return sizeOfPrime;
}
int main(){
long long size = searchprime();
while(cin >> Key >> L && Key !="0" && L != 0){
int r ;
long long factor;
bool isGood = true;
for(long long i = 1; prime[i]<L && i<= size; i++){
r = 0;
factor = prime[i];
int length = Key.length();
for(int k = 0; k < length; k++){
int t = Key[k] - '0';
r = r*10 + t;
r = r % factor;
}
if(r == 0){
cout << "BAD " << factor << endl;
isGood = false;
break;
}
}
if(isGood){
cout <<"GOOD" << endl;
}
}
//system("pause");
return 0;
}
1231. The Embarrassed Cryptography(求两个素数积)
最新推荐文章于 2019-04-23 14:31:26 发布