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;
    }
    
  • 相关阅读:
    #跟着教程学# 6、maya/python window命令
    element 中MessageBox的封装
    vue中XLSX解析excel文件
    git工作区-暂存区
    GIT相关
    弹窗-二维码生成与下载
    输入框限定100个汉字或200字符
    深浅拷贝(详细)
    日期选择器选取时间范围(非空以及初始时间不能在当天以前)
    多选
  • 原文地址:https://www.cnblogs.com/acagain/p/9180722.html
Copyright © 2011-2022 走看看