为啥只有60???

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

rfsfreffr @ 2019-05-16 20:31:59

#include <bits/stdc++.h>
using namespace std;
int a[2300],n,f=0;
void ff(int x){
    for(int i=2; i<=sqrt(x); i++){
        if(x%i==0) return ;
    }
    a[++f]=x;
    return ;
}
int main() {
    a[++f]=2;
    for(int i=3; i<=20000; i++){
        ff(i);
    }
    cin>>n;
    for(int i=1; i<=f; i++){
        for(int j=1; j<=f; j++){
            int last=n-a[i]-a[j],t=1;
            if(last<0) break;
            for(int k=2; k<=sqrt(last); k++){
                if(last%k==0) t=0;
            }
            if(t==1) {
                cout<<a[i]<<" "<<a[j]<<" "<<last<<endl;
                exit(0);
            }
        }
    }
}

by rfsfreffr @ 2019-05-16 20:32:12

help


by fzfnf @ 2019-05-16 20:40:43

@Roll_SKY_da_shen 仅有一行,输出3个质数,这3个质数之和等于输入的奇数。相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。 如果表示方法不唯一,请输出第一个质数最小的方案,如果第一个质数最小的方案不唯一,请输出第一个质数最小的同时,第二个质数最小的方案。


by fzfnf @ 2019-05-16 20:41:39

@Roll_SKY_da_shen 这里a[j]肯能会<a[i]


by rfsfreffr @ 2019-05-16 20:43:19

@Bob大大 不是错这里啦,是if(last<0)应该写成if(last<=0) .已经AC


|