2 条题解

  • 0
    @ 2025-10-8 16:58:24
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int mod=1e9+7, N=1e6+5;
    LL n, pr, prime[N];
    bool v[N];
    void get_prime()
    {
        pr=0; memset(v, 0, sizeof(v));
        for(LL i=2; i<=1000000; i++)
        {
            if(v[i]==0) prime[++pr]=i;
                 
            for(int j=1; (j<=pr) && (i*prime[j] <=1000000); j++)
            {
                v[i * prime[j]]=1;
                if(i % prime[j] ==0) break;
            }
        }
    }
    int main()
    {
        get_prime();
        bool bk;
        while(scanf("%lld", &n)!=EOF && n)
        {
            bk=0; for(LL i=1; i<=pr; i++) if(!v[n-prime[i]]){bk=1; printf("%lld = %lld + %lld\n", n, prime[i], n-prime[i]); break;}
            if(!bk) printf("Goldbach's conjecture is wrong.\n");
        }   
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:58:13
      #include<bits/stdc++.h>
      using namespace std;
      typedef long long LL;
      const int mod=1e9+7,N=1e6+5;
      LL n,pr,prime[N];
      bool v[N];
      void get_prime()
      {
          pr=0;memset(v,0,sizeof(v));
          for(LL i=2;i<=1000000;i++)
          {
              if(v[i]==0) prime[++pr]=i;
                   
              for(int j=1;(j<=pr)&& (i*prime[j]<=1000000);j++)
              {
                  v[ i * prime[j] ]=1;
                  if( i % prime[j] ==0) break;
              }
          }
      }
      int main()
      {
          get_prime();
          bool bk;
          while(scanf("%lld",&n)!=EOF && n)
          {
              bk=0;for(LL i=1;i<=pr;i++)if(!v[n-prime[i]]){bk=1;printf("%lld = %lld + %lld\n",n,prime[i],n-prime[i]);break;}
              if(!bk)printf("Goldbach's conjecture is wrong.\n");
          }   
          return 0;
      }
       
      • 1

      *【线性筛】哥德巴赫猜想[POJ2262]

      信息

      ID
      1764
      时间
      1000ms
      内存
      512MiB
      难度
      6
      标签
      递交数
      174
      已通过
      48
      上传者