本蒟蒻的埃氏筛法题解
2023-12-25 20:12:26
发布于:北京
40阅读
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;
}
全部评论 2
这方案不错
2024-01-27 来自 广东
0《蒟蒻》
2024-01-27 来自 广东
0
有帮助,赞一个