赞
踩
解题思路
欧拉筛就行了
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<iomanip> #include<cstring> #include<cmath> #include<map> #include<queue> #define ll long long #define ldb long double using namespace std; int n,q,x,cnt,v[100000010],pri[100010]; int main(){ scanf("%d%d",&n,&q); for(int i=2;i<=n;i++) { if(!v[i]) { pri[++cnt]=i; v[i]=i; } for(int j=1;j<=cnt;j++) { if(pri[j]>v[i]||pri[j]>n/i)break; v[pri[j]*i]=pri[j]; } } for(int i=1;i<=q;i++) { scanf("%d",&x); printf("%d\n",pri[x]); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。