• goj 哥德巴赫猜想(素数筛)


    Problem Description:

    哥德巴赫猜想大概是这么一回事:“偶数(>=4) == 两个质数的和”,至于是不是、成不成立,随它吧。

    Input:

    多组数据,每组一个偶数n(4<=n<=10^6)

    Output:

    若能分解则输出这两个质数,若有多解则按小数优先规则输出全部解,若无解则输出"No";

    Sample Input:

    16

    Sample Output:

    3 13
    5 11
    解题思路:简单的素数筛:欧拉筛法(线性筛法),时间复杂度是O(n)。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1e6+5;
     4 int n,cnt=0,prime[maxn];bool flag,isprime[maxn];
     5 void get_prime(){//欧拉
     6     memset(isprime,true,sizeof(isprime));
     7     isprime[0]=false,isprime[1]=false;
     8     for(int i=2;i<maxn;++i){
     9         if(isprime[i])prime[cnt++]=i;
    10         for(int j=0;j<cnt&&prime[j]*i<maxn;++j){
    11             isprime[i*prime[j]]=false;
    12             if(i%prime[j]==0)break;
    13         }
    14     }
    15 }
    16 int main(){
    17     get_prime();
    18     while(~scanf("%d",&n)){flag=false;
    19         for(int i=0;prime[i]<=n/2&&i<cnt;++i)//取n的一半
    20             if(isprime[n-prime[i]]){printf("%d %d
    ",prime[i],n-prime[i]);flag=true;}
    21         if(!flag)printf("No
    ");
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    线程的实现方式
    实现一个拷贝文件的工具类,要使用字符流还是字节流
    String&&StringBuilder&&StringBuffer
    面向对象的特征
    索引的选择
    TCP之Nagle算法&&延迟ACK
    通用套接字选项和TCP套接字选项
    TCP之非阻塞connect和accept
    TCP之种种连接异常
    TCP之listen&backlog
  • 原文地址:https://www.cnblogs.com/acgoto/p/9225718.html
Copyright © 2020-2023  润新知