本蒟蒻的埃氏筛法题解
2023-12-25 20:12:26
发布于:北京
72阅读
0回复
0点赞
看到神犇们都用的是O(n^3)的算法,本蒟蒻深感到自己的埃氏筛法过于画蛇添足,附上题解~
#include<iostream>
using namespace std;
#define ll long long
const int MAXN=20020;
bool prm[MAXN]; //埃氏筛结果-是否为质数,是为false,不是为true
void init(){ //埃氏筛
for(ll i=2;i<=MAXN;i++)
if(!prm[i])
for(ll j=i*i;j<=MAXN;j+=i)
prm[j]=true;
return;
}
int main(){
int n;
cin>>n;
init();
for(int i=2;i<=n;i++){
for(int j=2;j<=n;j++){
if(!prm[i]&&!prm[j]&&!prm[n-i-j]&&n-i-j>0){ //小判断,三个数都是质数且没有非正数
cout<<i<<' '<<j<<' '<<n-i-j; //输出
return 0; //输出最小的方案,由于for循环是从小到大循环的,所以第一个结果就是最小结果
}
}
}
return 0;
}
全部评论 3
不应该这样吗,上个题就是n2,这个题只输出一个就是n2啊,还有人n^3?
2024-08-30 来自 广东
0我看了一下,好像都是 的复杂度,我当时应该是写错了
2024-08-31 来自 北京
0但是朴素判断质数不优化+2重循环的确是
2024-08-31 来自 北京
0
这方案不错
2024-01-27 来自 广东
0我上个题就是看你的做的,这一道改了一下,和他的不谋而合,所以还是你的方案
2024-08-30 来自 广东
0
《蒟蒻》
2024-01-27 来自 广东
0
有帮助,赞一个