Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int M = 1 << 16;
- vector<int> primes;
- void sieve()
- {
- vector<bool> comp(M + 5, 0);
- for (int i = 2; i * i <= M; i++)
- {
- if (!comp[i])
- {
- for (int j = i * i; j <= M; j += i)
- {
- comp[j] = 1;
- }
- }
- }
- primes.clear();
- primes = {2};
- for (int i = 3; i <= M; i += 2)
- {
- if (!comp[i])
- {
- primes.push_back(i);
- }
- }
- }
- bool is_prime(long long n)
- {
- for (int i = 0; i < primes.size() && primes[i] * primes[i] <= n; i++)
- {
- if (n % primes[i] == 0)
- {
- return false;
- }
- }
- return true;
- }
- int main()
- {
- sieve();
- int T;
- scanf("%d", &T);
- while (T--)
- {
- long long n;
- scanf("%lld", &n);
- for (auto i = n - 1; i > 1; i--)
- {
- if (is_prime(i))
- {
- printf("%lld\n", i);
- break;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement