思路:
直接就是筛出素数,然后我很撒比的从那个地方往后for找一个位置也是质数的输出;
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e6+10; bool IsPrime[N]; int prime[N]; int num; void init() { num=0; memset(IsPrime,0,sizeof(IsPrime)); for(int i=2;i<=1000007;i++) { if(!IsPrime[i]) { prime[++num]=i; for(int j=i+i;j<=1000007;j+=i) IsPrime[j]=true; } } } int Find(int n) { int left=1,right=num; while(left<right) { int mid=left+(right-left)/2; if(prime[mid]>=n) right=mid; else left=mid+1; } return left; } int main() { init(); int n; scanf("%d",&n); int x; x=Find(n); for(int i=x;i<=num;i++) if(!IsPrime[i]) { printf("%d ",prime[i]); return 0; } return 0; }