Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define endl '\n'
- #define int long long
- #define sqr(x) ((x)*(x))
- const int N = 1000005;
- int prime[N];
- vector<int> prim;
- void Init() {
- prime[0] = prime[1] = 1;
- for (int i = 2; i < N; i++) if (!prime[i]) {
- prim.push_back(i);
- for (int j = i * 2; j < N; j += i) prime[j] = 1;
- }
- }
- int check(int n) {
- if (n < 2) return 0;
- int i = 0;
- for (int i = 0; i < prim.size() && n > 1; i++) {
- int cnt = 0;
- while (n % prim[i] == 0) {
- cnt++;
- n /= prim[i];
- if (cnt > 1) return 0;
- }
- }
- return 1;
- }
- void Main() {
- int n; cin >> n;
- int t = max((int)sqrt(n), 2ll);
- int l = t, r = t + 1;
- while (!check(l)) l--;
- while (!check(r)) r++;
- cout << min(abs(n - sqr(l)), abs(n - sqr(r))) << endl;
- }
- signed main() {
- cin.tie(0)->sync_with_stdio(0);
- Init();
- int T; cin >> T;
- while (T--) Main();
- }
Advertisement
Add Comment
Please, Sign In to add comment