4520. 质数
给定一个正整数 XX,请你在 XX 后面添加若干位数字(不能不添加;添加的部分不得以数字 00 开头),使得结果为质数,在这个前提下所得的结果应尽量小。
输入格式
第一行包含一个整数 TT,表示共有 TT 组测试数据。
每组数据占一行,包含一个整数 XX。
输出格式
每组数据输出一行结果,一个整数,表示所得的满足条件的最小质数。
数据范围
1≤T≤1001≤T≤100,
1≤X≤1001≤X≤100。
输入样例:
1
1
输出样例:
11
代码:指数筛+模拟
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
const int n = 1e6;
int a[n];
int sovle()
{
int k;
cin >> k;
for (int i = 1; i <= 9; i ++ )
if(!a[k*10+i])return k*10+i;
for (int i = 10; i <= 99; i ++ )
if(!a[k*100+i])return k*100+i;
/*for (int i = 100; i <= 999; i ++ )
if(!a[k*1000+i])return k*1000+i;*/
/*for (int i = 1000; i <= 9999; i ++ )
if(!a[k*10000+i])return k*10000+i;*/
}
int main()
{
for (int i = 2; i < n; i ++ )
{
if(a[i])continue;
for (int j = i+i; j < n; j +=i )
a[j]=1;
}
map<int,int>mp;
for (int i = 2; i < n; i ++ )
{
if(a[i]==0)
mp[i]++;
}
int tt;
cin >> tt;
while (tt -- )
{
cout<<sovle()<<endl;
}
}