Advertisement
leoanjos

The Embarraseed Cryptographer

Nov 10th, 2021
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <bitset>
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. #define long long long int
  9.  
  10. const int MAX = 1e6 + 5;
  11.  
  12. int mod(string &n, int p) {
  13.     int ans = 0LL;
  14.     for (int i = 0, size = n.size(); i < size; i++)
  15.         ans = (ans * 10 + n[i] - '0') % p;
  16.  
  17.     return ans;
  18. }
  19.  
  20. int main() {
  21.     ios_base::sync_with_stdio(false);
  22.     cin.tie(NULL);
  23.  
  24.     bitset<MAX> is_prime;
  25.     is_prime.set();
  26.  
  27.     vector<int> primes(1, 2);
  28.     for (int i = 3; i < MAX; i += 2) {
  29.         if (is_prime[i]) primes.push_back(i);
  30.         for (int j = 1; j < (int) primes.size() && i * primes[j] < MAX; j++) {
  31.             is_prime[i * primes[j]] = false;
  32.             if (!(i % primes[j])) break;
  33.         }
  34.     }
  35.  
  36.     string K; int L;
  37.     while (cin >> K >> L, K != "0" || L) {
  38.         int prime = -1;
  39.         for (int j = 0; j < (int) primes.size() && primes[j] < L && prime == -1; j++)
  40.             if (!mod(K, primes[j])) prime = primes[j];
  41.  
  42.         if (prime == -1) cout << "GOOD\n";
  43.         else cout << "BAD " << prime << "\n";
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement