专栏文章
题解:SP4164 HS08PAUL - A conjecture of Paul Erdős
SP4164题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipcw3fi
- 此快照首次捕获于
- 2025/12/03 09:56 3 个月前
- 此快照最后确认于
- 2025/12/03 09:56 3 个月前
题解:SP4164 HS08PAUL - A conjecture of Paul Erdős
思路分析
我们先用筛法筛出 所有的质数,则用一个数组将原数对应位置标记为 。
然后,用前缀和:
sum[i]=sum_[i-1],即可求出 中所有的满足题目所述的素数个数。最后,输入时,仅仅只需要输出 即可。
代码
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int vis[10000005];
int sum[10000005];
vector<int> prime;
signed main(){
ios::sync_with_stdio(false),cin.tie(0);
for(int i=2;i<=10000000;i++){
if(vis[i]==0){
for(int j=2;j<=10000000/i;j++)vis[min(i*j,10000000ll)]=1;
prime.push_back(i);
}
}
for(int x=1;x*x*x*x<=10000000;x++)
for(int y=1;y*y<=10000000;y++)
if(vis[min(x*x*x*x+y*y,10000000ll)]==0)
sum[min(x*x*x*x+y*y,10000000ll)]=1;
for(int i=1;i<=10000000;i++)sum[i]+=sum[i-1];
int t;
cin>>t;
while(t--){
int n;
cin>>n;
cout<<sum[n]<<"\n";
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...