zoukankan      html  css  js  c++  java
  • LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)

    http://lightoj.com/volume_showproblem.php?problem=1259

    题目大意:给你一个数n,这个数能分成两个素数a、b,n = a + b且a<=b,问有几组这样的(a,b)

    比较简单的哥德巴赫猜想题,不需要多说,但一般的素数判定会TLE,所以这里用的是素数筛选法

    这里需要注意的是筛选出来素数数组的大小

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    
    using namespace std;
    typedef long long ll;
    const int N = 1e7 + 10 ;
    
    int prime[1000010];//这里数组大小要注意,小了会RE大了会MLE
    bool Isprime[N];
    int k;
    
    void Prime()
    {
        k = 0;
        memset(Isprime, true, sizeof(Isprime));
        Isprime[1] = false;
        for(int i = 2 ; i < N ; i++)
        {
            if(Isprime[i])
            {
                prime[k++] = i;
                for(int j = 2 ; i * j < N ; j++)
                    Isprime[i * j] = false;
            }
        }
    }
    
    int main()
    {
        int t, n, x = 0;
        scanf("%d", &t);
        Prime();
        while(t--)
        {
            x++;
            int num = 0;
            scanf("%d", &n);
            for(int i = 0 ; i < k && prime[i] <= n / 2 ; i++)
            {
                if(prime[i] <= n - prime[i] && Isprime[n - prime[i]])
                    num++;
            }
            printf("Case %d: %d
    ", x, num);
        }
        return 0;
    }
  • 相关阅读:
    Spring
    linux下jdk多版本管理
    linux集群管理
    python多任务处理
    Web框架的引入
    Git命令大全
    Git远程仓库--GitHub
    基于python实现简单web服务器
    python文件读写方式
    几句话搞懂URI、URL、URN之间的关系
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4935119.html
Copyright © 2011-2022 走看看