您的位置:首页 > 其它

1231. The Embarrassed Cryptography(求两个素数积)

2013-01-02 20:05 148 查看
/*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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: