求帮助
查看原帖
求帮助
1437401
smby_mobei楼主2024/9/23 17:22

这题应该没错啊

#include<bits/stdc++.h>
using namespace std;
int T;
const int maxn = 1e7 + 5;
bool vis[maxn];
int f[maxn];
bool num (int x){
	while(x) {
		int k = x % 10;
		if (k == 7) {
			return true;
		}
		x /= 10;
	}
	return false;
}
int main () {
//	freopen ("number3.in", "r", stdin);
//	freopen ("number3.out", "w", stdout);
	for (int i = 1; i <= maxn; i++) {
		if (!vis[i]){
			if (num(i) || i % 7 == 0) {
				for (int j = i; j <= maxn; j += i) {
					vis[j] = 1;
//					cout << j << " ";
				}
			}
		} 
	}
	cin >> T;
	while (T--){
		int x ;
		 cin >> x;
		 if (vis[x]) {
		 	cout << -1 << '\n';
		 } else {
		 	for (int i = x + 1; i <= maxn; i++ ) {
		 		if (!vis[i]) {
		 			cout << i << '\n';
		 			break;
				 }
			 }
		 }
	}
	return 0;
 }


https://www.luogu.com.cn/team/88672
2024/9/23 17:22
加载中...