| 记录编号 | 569636 | 评测结果 | AAAAAAAAAA | 
    
        | 题目名称 | 3624.[NOIP 2021]报数 | 最终得分 | 100 | 
    
        | 用户昵称 |  lihaoze | 是否通过 | 通过 | 
    
        | 代码语言 | C++ | 运行时间 | 2.225 s | 
    
        | 提交时间 | 2022-03-13 11:07:23 | 内存使用 | 45.78 MiB | 
    
    
    
    		显示代码纯文本
		
		#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <string>
#define OPEN(_x) freopen(#_x".in", "r", stdin); freopen(#_x".out", "w", stdout)
#define MAX(_a, _b) [&](int __a, int __b) { return __a < __b ? __b : __a; }((_a), (_b))
#define MIN(_a, _b) [&](int __a, int __b) { return __a > __b ? __b : __a; }((_a), (_b))
#define ABS(_x) [&](int __x) { return __x < 0 ? -__x : __x; }(_x)
#define fi first
#define se second 
using ll = long long;
using PII = std::pair<int, int>;
namespace IO {
    template <typename T> inline T read() {
        char ch = getchar();
        T ret = 0, sig = 1;
        while(ch < '0' || ch > '9') { if(ch == '-') sig = -1; ch = getchar(); }
        while(ch >= '0' && ch <= '9') ret *= 10, ret += ch - 48, ch = getchar();
        return ret * sig;
    }
    template <typename T> inline void write(T out) {
        if(!out) { putchar('0'), putchar(' '); return; }
        int stk[100], tt = 0;
        if(out < 0) out = -out, putchar('-');
        while(out) stk[tt++] = out % 10, out /= 10;
        for(register int i = --tt; i>=0; --i) putchar(stk[i] + 48);
        putchar(' ');
    }
    template <typename T> inline void read(T& ret) { ret = IO::read<T>(); }
    template <typename T, typename... Args> inline void read(T& x, Args&... args) { IO::read(x), IO::read(args...); }
    template <typename T, typename... Args> inline void write(T x, Args... args)  { IO::write(x), IO::write(args...); }
};
const int N = 1e7+10;
bool st[N];
int nxt[N], a[N];
inline bool check(int x) {
    while(x) {
        if(x % 10 == 7) return true;
        x /= 10;
    }
    return false;
}
inline void work(int x) {
    int t = 0;
    for(register int i = 1; i<=x; ++i) {
        if(check(i)) {
            st[i] = true, nxt[i] = -1;
            for(register int j = 2; j<=x/i; ++j) st[i*j] = true, nxt[i*j] = -1;
        } else if(!st[i]) nxt[t] = i, t = i;
    }
}
int main() {
    #ifdef DEBUG
    OPEN(test);
    #endif
    OPEN(2021number);
    int n, mx;
    IO::read(n);
    for(register int i = 1; i<=n; ++i) IO::read(a[i]), mx = MAX(mx, a[i]);
    work(MIN(mx << 1, N));
    for(register int i = 1; i<=n; ++i) IO::write(nxt[a[i]]), puts("");
    return 0;
}