70分求条

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

syd190214 @ 2024-12-19 20:53:17

我快炸了

#include <iostream>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n;
bool a[20005];
void zs(){
    int i,j;
    memset(a,true,sizeof(a));
    a[1]=false;
    for(i=2;i<=20000;i++){
        if(a[i]==true){
            for(j=i*2;j<=20000;j+=i){
                a[j]=false;
            }
        }
    }
}  
int main(){
    int i,j;
    zs();
    scanf("%d",&n);
    for(i=3;i<n;i+=2){
        if(a[i]){
            for(j=i;j<n;j+=2){
                if(a[j]){
                    int k=n-i-j;
                    if(a[k]){
                        printf("%d %d %d",i,j,k);
                        return 0;
                    }
                }
            }
        }
    }
    return 0;
}

玄关


by Clare613 @ 2024-12-19 21:02:24

@syd190214 二也是质数


by ruo_aqueous @ 2024-12-19 21:05:23

@syd190214


#include <iostream>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n;
bool a[20005];
void zs(){
    int i,j;
    memset(a,true,sizeof(a));
    a[1]=false;
    for(i=2;i<=20000;i++){
        if(a[i]==true){
            for(j=i*2;j<=20000;j+=i){
                a[j]=false;
            }
        }
    }
}  
int main(){
    int i,j;
    zs();
    scanf("%d",&n);
    for(i=2;i<n;++i){
        if(a[i]){
            for(j=i;j<n;++j){
                if(a[j]){
                    int k=n-i-j;
                    if(a[k]&&k>j){
                        printf("%d %d %d",i,j,k);
                        return 0;
                    }
                }
            }
        }
    }
    return 0;
}

by ruo_aqueous @ 2024-12-19 21:06:18

@syd190214

  1. (如同他说的)2也要算
  2. 你没有判断k>j

by syd190214 @ 2024-12-19 21:09:07

@ruo_aqueous 这样30分


by ruo_aqueous @ 2024-12-19 21:11:10

https://www.luogu.com.cn/record/195213312
??
@syd190214


by syd190214 @ 2024-12-19 21:11:32

@ruo_aqueous

#include <iostream>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n;
bool a[20005];
void zs(){
    int i,j;
    memset(a,true,sizeof(a));
    a[1]=false;
    for(i=2;i<=20000;i++){
        if(a[i]==true){
            for(j=i*2;j<=20000;j+=i){
                a[j]=false;
            }
        }
    }
}  
int main(){
    int i,j;
    zs();
    scanf("%d",&n);
    if(a[n-4]){
        printf("2 2 %d",n-4);
        return 0;
    }
    for(i=3;i<n;i+=2){
        if(a[i]){
            for(j=i;j<n;j+=2){
                if(a[j]){
                    int k=n-i-j;
                    if(a[k]){
                        printf("%d %d %d",i,j,k);
                        return 0;
                    }
                }
            }
        }
    }
    return 0;
}

这就过了,没有特判


by ruo_aqueous @ 2024-12-19 21:12:52

@syd190214
哇哦


by syd190214 @ 2024-12-19 21:13:27

@ruo_aqueous???


by ruo_aqueous @ 2024-12-19 21:14:44

@syd190214

《没有特判》


if(a[n-4]){
  printf("2 2 %d",n-4);
  return 0;
}

|