关闭

题目1440:Goldbach's Conjecture

144人阅读 评论(0) 收藏 举报
题目1440:Goldbach's Conjecture

时间限制:1 秒

内存限制:128 兆

特殊判题:

题目描述:

Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n = p1 + p2. 
This conjecture has not been proved nor refused yet. No one is sure whether this conjecture actually holds. However, one can find such a pair of prime numbers, if any, for a given even number. The problem here is to write a program that reports the number of all the pairs of prime numbers satisfying the condition in the conjecture for a given even number.

A sequence of even numbers is given as input. Corresponding to each number, the program should output the number of pairs mentioned above. Notice that we are interested in the number of essentially different pairs and therefore you should not count (p1, p2) and (p2, p1) separately as two different pairs.

输入:

An integer is given in each input line. You may assume that each integer is even, and is greater than or equal to 4 and less than 2^15. The end of the input is indicated by a number 0.

输出:

Each output line should contain an integer number. No other characters should appear in the output.

样例输入:
6
10
12
0
样例输出:
1
2
1
解题思路:先找出一定范围内的素数,存起来,然后遍历,找到符合的话,count++。
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
#include<math.h>
using namespace std;
# define len 200000
int prime[len];//用来存储素数
int primesize; //素数个数
bool mark[len];//标记一个数是不是素数
 
void init()
{
    primesize=0;//素数个数初始化为0
    long long int i,j;
    for( i=0; i<len; i++)
    {
        mark[i]=false;//为true时,说明其不是素数
    }
    for( i=2; i<len; i++)
    {
        if(mark[i]==true)  continue;//不是素数继续
        else
        {
            prime[primesize++]=i;
            for( j=i*i; j<len; j+=i)
            {
                mark[j]=true;
            }
        }
    }
}
 
 
int main()
{
    init();
    int n;
 
    while(scanf("%d",&n)!=EOF&&n)
    {
            int count=0;
        for(int i=0; i<primesize&&prime[i]<n; i++)
            for(int j=i; j<primesize&&prime[j]<n; j++)
            {
                if(prime[i]+prime[j]==n)
                    count++;
            }
        printf("%d\n",count);
    }
    return 0;
}
 
/**************************************************************
    Problem: 1440
    User: zhuoyuezai
    Language: C++
    Result: Accepted
    Time:70 ms
    Memory:2496 kb
****************************************************************/

 方法2,不是先生成一个素数表,而是暴利判断,貌似时间短了一些

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
#include<math.h>
using namespace std;
 
bool judge(int n)
{
    if(n<=1)
        return false;
    int bound =(int)(sqrt(n)+1);
    for(int i=2; i<bound; i++)
    {
        if(n%i==0)
            return false;
    }
    return true;
 
}
 
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n)
    {
        int count=0;
        int m=n/2;
        for(int i=2; i<=m; i++)
        {
            if(judge(i)&&judge(n-i))
                count++;
        }
        printf("%d\n",count);
    }
    return 0;
}
 
/**************************************************************
    Problem: 1440
    User: zhuoyuezai
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:1532 kb
****************************************************************/

 

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

[蓝桥杯历届试题] 第39级台阶

题目描述:     小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!     站在台阶前,他突然又想着一个问题:     如果我每一步只能迈上1个或2个台阶。...
  • sr19930829
  • sr19930829
  • 2014-03-17 19:08
  • 2148

第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

package org.bluebridge.topics; /* * 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他...
  • u013091087
  • u013091087
  • 2015-02-11 16:48
  • 2062

Android实战技巧之十五:多分辨率适配常用目录

一个好的App必须要支持绝大多数市面上的设备,适配繁多的分辨率一度让我们陷入了分辨率的海洋。无论如何,这个工作是逃不掉的。我们可以用多个layout目录对不同分辨率进行单独布局,如下:layout-l...
  • lincyang
  • lincyang
  • 2015-03-10 14:35
  • 6132

LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)

1259 - Goldbach`s Conjecture     PDF (English) Statistics Forum Time Li...
  • Rain722
  • Rain722
  • 2017-03-21 16:11
  • 192

Hdu 4715 Difference Between Primes (2013网络赛 warm up) & LightOJ 1259 Goldbach`s Conjecture(素数和差)

和以前做过的一题很像,于是没细想就忽略了n==2这种情况。。。。以后不能再手残贡献WA了。。 Hdu 4715 Difference Between Primes 题意:一个偶数表示为两素数之...
  • whyorwhnt
  • whyorwhnt
  • 2013-09-08 20:42
  • 932

九度OJ题目1440:Goldbach's Conjecture

题目1440:Goldbach's Conjecture 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: Goldbach's Conjecture: For any e...
  • zpy2073
  • zpy2073
  • 2017-04-12 22:23
  • 130

题目1440:Goldbach's Conjecture

题目1440:Goldbach's Conjecture 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1974 解决:1214 题目...
  • qq_34441527
  • qq_34441527
  • 2017-05-01 09:33
  • 125

关于S5pv210 wince/android VGA 1440*900 高分辨率闪烁和水波纹问题的解决办法分享

作者:gooogleman  日期:2012-12-15 我这周都在给客户定制一个S5pv210 android VGA 1440*900 分辨率的 系统,让他好给客户去演示 但是我开始遭遇了一些...
  • gooogleman
  • gooogleman
  • 2012-12-16 01:18
  • 2765

Graph Edge Coloring-Vizing´s Theorem and Goldberg´s Conjecture

  • 2014-06-19 16:06
  • 12.69MB
  • 下载

南阳OJ之语言入门 题目39 - 水仙花数

题目信息:题目链接 水仙花数 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 描述请判断一个数是不是水仙花数。 其中水仙花数定义各个位...
  • qq_36631076
  • qq_36631076
  • 2017-07-24 11:40
  • 141
    个人资料
    • 访问:57693次
    • 积分:1229
    • 等级:
    • 排名:千里之外
    • 原创:149篇
    • 转载:8篇
    • 译文:0篇
    • 评论:4条
    最新评论