实在不明白为什么把素数筛的n换成20000就AC了,n只过6个点

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

bjrjk @ 2016-11-14 22:19:33

#include<iostream>
#include<math.h>
using namespace std;
int prime[20000];
bool isprime(int n){
    int s=sqrt((double)n);
    for(int i=2;i<=s;i++){
        if(n%i==0)return false;
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    int prime_ptr=0;
    for(int i=2;i<20000;i++){//为什么原来这里i<n就只过6个点,改成2w就AC呢?
        if(isprime(i)){prime[prime_ptr]=i;
        prime_ptr++;}
    }
    for(int i=0;i<prime_ptr&&prime[i]<=n;i++){
        for(int j=0;j<prime_ptr&&prime[i]+prime[j]<=n;j++){
            int t=n-prime[i]-prime[j];
            if(isprime(t)&&t>0){
                cout<<prime[i]<<" "<<prime[j]<<" "<<t;
                cin>>n;
                return 0;
            }
        }
    }
}

by 制杖 @ 2016-11-18 19:57:17

你猜 ###############****____>>>>____****


by hongxuran @ 2016-11-23 17:09:41

var i:integer;

a:gjd


by 圣弗朗西斯科 @ 2016-12-08 12:14:28

我的也是i<n;但过了。


|