• UVA, 686 Goldbach's Conjecture (II)


    题意:给你一个数,认为它能拆成两个素数之和的形式,有几组素数则输出几

      例:10= 3+7

    思路:打印素数表,判断x-prime[a]是否为素数即可

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 #define MAXN 1000001
     7 #define ll
     8 int cnt,counts;
     9 long long num;
    10 bool isprime[MAXN];
    11 long long prime[MAXN];
    12 bool vis[MAXN];
    13 
    14 bool datecin()
    15 {
    16     counts=0;
    17     memset(vis,1,sizeof(vis));
    18     if(scanf("%lld",&num)!=EOF)
    19     {
    20         if(num==0)
    21             return false;
    22         return true;
    23     }
    24     return false;
    25 }
    26 
    27 void getprime()
    28 {
    29     int i,j;
    30     memset(isprime,1,sizeof(isprime));
    31     isprime[0]=isprime[1]=cnt=0;
    32     for(i=2;i*i<MAXN;i++)
    33     {
    34         if(isprime[i])
    35         {
    36             for(j=i*i;j<MAXN;j+=i)
    37             {
    38                 if(isprime[j])
    39                 {
    40                     isprime[j]=false;
    41                 }
    42             }
    43 
    44         }
    45     }
    46     for(i=2;i<MAXN;i++)
    47     {
    48         if(isprime[i])
    49             prime[cnt++]=i;
    50     }
    51 }
    52 
    53 void showisp()
    54 {
    55     for(int i=0;i<MAXN;i++)
    56     {
    57         if(isprime[i])
    58         cout<<i<<' ';
    59     }
    60     cout<<endl;
    61     for(int i=0;i<cnt;i++)
    62     {
    63         cout<<prime[i]<<' ';
    64     }
    65 }
    66 
    67 int datecal()
    68 {
    69     for(int i=0;i<cnt;i++)
    70     {
    71         if(num<prime[i])
    72             break;
    73         if(isprime[num-prime[i]]&&vis[prime[i]])
    74         {
    75             counts++;
    76             vis[prime[i]]=0;
    77             vis[num-prime[i]]=0;
    78         }
    79     }
    80     return counts;
    81 }
    82 int main()
    83 {
    84     getprime();
    85     //showisp();
    86     #ifdef ll
    87     while(datecin())
    88     {
    89         cout<<datecal()<<endl;
    90     }
    91     #endif // ll
    92     return 0;
    93 }
    View Code
  • 相关阅读:
    lnmp一键安装包,安装多版本php,并开启redis与swoole
    wangEditor的使用
    记一次傻逼的录入
    PHP自动加载
    pip升级
    Ubuntu安装mycli,让mysql命令行可以自动提示
    Redis存储AccessToken
    微信小程序生成太阳码
    巧妙的新订单提醒功能
    使用pt-query-digest进行日志分析
  • 原文地址:https://www.cnblogs.com/byzsxloli/p/5397617.html
Copyright © 2020-2023  润新知