XRUIX @ 2024-03-27 16:23:19
案例全错了,不知道哪的问题
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
bool* isPrime = new bool[100000005];
int mydata[6000010];
void GetPrime(int n) {
memset(isPrime, 1, sizeof(isPrime));
//1不是素数
isPrime[1] = 0;
int cnt = 0;
for (int i = 2; i <= n; i++) {
//没筛掉
if (isPrime[i]) {
mydata[++cnt] = i;
}
//遍历已有素数
for (int j = 1; j <= cnt && i * mydata[j] <= n; j++) {
//i*data->at(j)为素数
isPrime[i * mydata[j]] = 0;
//保证线性
if (i % mydata[j] == 0) {
break;
}
}
}
}
int main()
{
int n, k;
cin >> n >> k;
GetPrime(n);
int curr;
while (k--) {
scanf("%d", &curr);
printf("%d\n", mydata[curr]);
}
return 0;
}
by wwwee @ 2024-04-06 10:55:47
#include<bits/stdc++.h>
using namespace std;
long long t,b[10000005],n,i,j,q=0,w;
bool a[100000005];
void zss(int x)
{
int e=1;
a[1]=1;
for(i=2;i<=x;i++)
{
if(a[i]==0)
{
b[e]=i;
e++;
}
for(j=1;j<e&&b[j]*i<=x;j++)
{
a[b[j]*i]=1;
if(i%b[j]==0)break;
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin>>w>>n;zss(w);
for(i=1;i<=n;i++)
{
cin>>t;
cout<<b[t]<<endl;
}
return 0;
}
你看看