洛谷 P1579 哥德巴赫猜想(升级版)

时间:2022-09-30 16:32:35

嗯...

这或许也算一道数论题吧...

题目链接:https://www.luogu.org/problemnew/show/P1579

这道题的说明好像只会扰乱人的思路....然后就是这道题的细节比较多...

首先做的时候总是50分、70分...

然后发现有两个细节:

1、j不能从i开始循环,而要从2开始循环

2、k不一定是一个正数,所以要加一层判定(n == 97)

思路:

读入------>欧拉筛判质数------>暴力枚举------->判断输出

AC代码:

 #include<cstdio>
#include<iostream> using namespace std; const int maxn = ;
int n, cnt;
int prime[maxn], vis[maxn], pp[maxn];
inline void is_prime(){
for(int i = ; i <= n; i++){
if(!vis[i]) prime[++cnt] = i, pp[i] = ;
for(int j = ; j <= cnt && i * prime[j] <= n; j++){
vis[i * prime[j]] = ;
if(i % prime[j] == ) break;
}
}
} int main(){
scanf("%d", &n);
is_prime();
for(int i = ; i <= n; i++){
for(int j = ; j <= n; j++){
//for(int j = i; j <= n; j++)
int k = n - i - j;
if(k >= ){ //
if(!vis[i] && !vis[j] && !vis[k]){
printf("%d %d %d", i, j, k);
return ;
}
}
}
}
return ;
}

AC代码