zoukankan      html  css  js  c++  java
  • 素数筛 LightOJ

    Goldbach's conjecture is one of the oldest unsolved problems in number theory and in all of mathematics. It states:
    
    Every even integer, greater than 2, can be expressed as the sum of two primes [1].
    
    Now your task is to check whether this conjecture holds for integers up to 107.
    

    Input

    Input starts with an integer T (≤ 300), denoting the number of test cases.
    
    Each case starts with a line containing an integer n (4 ≤ n ≤ 107, n is even).
    

    Output

    For each case, print the case number and the number of ways you can express n as sum of two primes. To be more specific, we want to find the number of (a, b) where
    
    1)      Both a and b are prime
    
    2)      a + b = n
    
    3)      a ≤ b
    

    Sample Input

    2
    
    6
    
    4
    

    Sample Output

    Case 1: 1
    
    Case 2: 1
    

    题意就是找一个偶数可以分解为几对素数之和,数据有些大,需要用筛法求素数。

    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <stdio.h>
    using namespace std;
    typedef long long ll;
    const int INF=0x3f3f3f3f;
    const int maxn=1e7;
    bool vis[maxn];
    int pri[maxn/10];
    void prime()
    {
        memset(vis,0,sizeof(vis));
        int num=0;
        for(int i=2;i<maxn;i++)
        {
            if(!vis[i])       //原理就是每次标记所有约数有i的数,然后遍历所有没有被标记过的数
            {
                pri[++num]=i;
                for(int j=i*2;j<=maxn;j+=i)
                vis[j]=1;
            }
        }
    }
    int main()
    {
        prime();
        int t,n;
        cin>>t;
        for(int cas=1;cas<=t;cas++)
        {
            cin>>n;
            int ans=0,tmp=n/2;
            for(int i=1;pri[i]<=tmp;i++)
            {
                if(vis[n-pri[i]]==0)
                {
                    ans++;
                }
            }
            cout<<"Case "<<cas<<": "<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    我爱Java系列之---【SpringBoot打成war包部署】
    279. Perfect Squares
    矩阵dfs--走回路
    112. Path Sum
    542. 01 Matrix
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    Invert Binary Tree
    563 Binary Tree Tilt
    145 Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/acagain/p/9180722.html
Copyright © 2011-2022 走看看