题意:
中文翻译如下:
我们定义由n个整数组成的序列a1,a2,...,an是饥饿序列,当且仅当:
1、它的元素是以递增的顺序,即对于任何两个下标i,j(i <j)满足不等式ai <aj。
2、对于任何两个下标i和j(i <j),aj不能被ai整除。
请你找到包含n个元素的饥饿序列。
Input
只有一个单独的整数n(1 ≤ n ≤ 105)
Output
输出一行由空格分隔的n个整数a1 a2,...,an(1≤ai≤107),表示可能的饥饿序列。
注意,每个ai不能大于10000000且不能小于1。
如果有多个解决方案,您可以输出任何一个。即与样例输出不相同也有可能是正确的。
思路:只要是个素数就不可能被整出,筛吧!
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
bool vis[10000005];
long long a[100005];
void prime()
{
memset(vis,0,sizeof(vis));
int cot=0;
for(long long i=2;i<=10000000;i++)
{
if(vis[i]==false)
{
if(cot>=100000)
break;
a[++cot]=i;
for(long long j=i;j<=10000000;j=j+i)
{
vis[j]=true;
}
}
}
}
int main()
{
prime();
int n;
cin>>n;
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}