首页 > 代码库 > codevs 2947 饥饿数列

codevs 2947 饥饿数列

题目描述 Description

Iahub和Iahubina去一家豪华餐厅约会,然而到了付账时,收银员不向他们收取餐费,而是要求他们写出一个数列。对这个数列的要求如下:

1、数列的长度为n

2、对于数列中的任意两个满足i<j的数ai、aj,要求ai<aj。

3、对于数列中的任意两个满足i<j的数ai、aj,要求ai不能整除aj。

输入描述 Input Description

一个数n

输出描述 Output Description

一行,n个数,所求数列。

如果有多种可行数列,输出字典序最小的一个。

样例输入 Sample Input

3

样例输出 Sample Output

2 3 5

数据范围及提示 Data Size & Hint

0<n<=105

代码:

/*筛法*/#include<cstdio>using namespace std;int n,tot;bool a[1300001];void shai(){    for(long long i=2;i<=1300000;i++)      if(a[i]==0)        for(long long j=2*i;j<=1300000;j+=i)          a[j]=1;}int main(){    scanf("%d",&n);    if(n==1)    {        printf("1");        return 0;    }    long long i=2;    shai();    while(tot<n)    {          if(a[i]==0)            printf("%lld ",i),tot++;        i++;    }    return 0;}

 

codevs 2947 饥饿数列