30分求调

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

somer @ 2024-10-12 20:26:28

提交记录
代码:

#include<bits/stdc++.h>
using namespace std;
int prime[3005],flag[20005],len=0;
void pr(int n){//线性筛 
    for(int i=2;i<=n;i++){
        if(flag[i]==0) prime[++len]=i;
        for(int j=2;j<=len && i*prime[j]<=n;j++){
            flag[i*prime[j]]=1;
        }
    }
}
int main(){
    int n;
    scanf("%d",&n);
    pr(n);
    if(flag[n-4]==0){//特判 
        printf("2 2 %d",n-4);
        return 0;
    }
    for(int i=2;i<=len && prime[i]<=n/3;i++){//枚举 
        for(int j=i;j<=len && prime[j]<=(n-prime[i])/2;j++){
            if(flag[n-prime[i]-prime[j]]==0) printf("%d %d %d",prime[i],prime[j],n-prime[i]-prime[j]);
            return 0;
        }
    }
}

AC必关!


by FFFuuuFFFuuu @ 2024-10-12 20:36:36

#include<bits/stdc++.h>
using namespace std;
int prime[3005], flag[20005], len=0;

void pr(int n){//线性筛 
    for(int i=2;i<=n;i++){
        if(flag[i]==0) prime[++len]=i;
        for(int j=1;j<=len && i*prime[j]<=n;j++){ // 将j从2改为1
            flag[i*prime[j]]=1;
        }
    }
}

int main(){
    int n;
    scanf("%d",&n);
    pr(n);
    if(flag[n-4]==0){//特判 
        printf("2 2 %d",n-4);
        return 0;
    }
    for(int i=2;i<=len && prime[i]<=n/3;i++){//枚举 
        for(int j=i;j<=len && prime[j]<=(n-prime[i])/2;j++){
            if(flag[n-prime[i]-prime[j]]==0){
                printf("%d %d %d",prime[i],prime[j],n-prime[i]-prime[j]);
                return 0;
            }
        }
    }
}

加油!


by FFFuuuFFFuuu @ 2024-10-12 20:37:47

@somer ```cpp

include<bits/stdc++.h>

using namespace std; int prime[3005], flag[20005], len=0;

void pr(int n){//线性筛 for(int i=2;i<=n;i++){ if(flag[i]==0) prime[++len]=i; for(int j=1;j<=len && iprime[j]<=n;j++){ // 将j从2改为1 flag[iprime[j]]=1; } } }

int main(){ int n; scanf("%d",&n); pr(n); if(flag[n-4]==0){//特判 printf("2 2 %d",n-4); return 0; } for(int i=2;i<=len && prime[i]<=n/3;i++){//枚举 for(int j=i;j<=len && prime[j]<=(n-prime[i])/2;j++){ if(flag[n-prime[i]-prime[j]]==0){ printf("%d %d %d",prime[i],prime[j],n-prime[i]-prime[j]); return 0; } } } }


by FFFuuuFFFuuu @ 2024-10-12 20:38:43

@somer sorry刚刚没at到


by somer @ 2024-10-12 20:41:29

@FFFuuuFFFuuu 谢谢thx (已关)


|