Twin Prime Conjecture

                                           Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
                                           Total Submission(s): 1898    Accepted Submission(s): 592

Problem Description
  
   If we define dn as: dn = pn+1-pn, where pi is the i-th prime. It is easy to see that d1 = 1 and dn=even for n>1. Twin Prime Conjecture states that "There are infinite consecutive primes differing by 2".
Now given any positive integer N (< 10^5), you are supposed to count the number of twin primes which are no greater than N.
 
Input
      Your program must read test cases from standard input.
The input file consists of several test cases. Each case occupies a line which contains one integer N. The input is finished by a negative N.
 
Output
    
   For each test case, your program must output to standard output. Print in one line the number of twin primes which are no greater than N.
 
Sample Input
1
5
20
-2
 
Sample Output
0
1
4
 
Source
 
 
题意:
     题目意思很简单就是判断孪生素数(遗憾的是本人英语是烂的一笔,刚开始居然没理解,啊!!!!!!).
之后就看你当时的脑神经如何的运转了,如果平时就喜欢暴力的话。那Ok这题就很简单,直接打表轻松过。
   但是不知道是不是有某些会读研读傻了,会不会总是认为什么题都要高级算法的话。。。。 哈哈。开玩笑。。。。。
言归正传,如果要用算法的话,其实就是一个普通的树状数组简单题。
下面就给出两种不同的解法吧。
    偷偷告诉你本人感觉用树状数组写是有点脑残的行为。。。。。简单的题目为何在研究生眼里就变得如此复杂呢????哈哈哈
 
 
素数刷选法:
 
#include <stdio.h>
#include <string.h> const int MAX = 100000 + 10;
bool prime[MAX];
int r[MAX]; void IsPrime()
{
memset(prime,0,sizeof(prime));
prime[0] = prime[1] = 1;
for(int i = 2;i < MAX;i++)
for(int j = 2;i*j < MAX;j++)
prime[j*i] = 1;
} void sove()
{
IsPrime();
r[0] = r[1] = r[2] = 0;
for(int i = 3;i < MAX;i++)
{
if(!prime[i-2]&&!prime[i])
r[i] = r[i-1] + 1;
else
r[i] = r[i-1];
}
}
int main()
{
int n;
sove();
while(scanf("%d",&n),n>-1)
{
printf("%d\n",r[n]);
}
return 0;
}

高级的树状素组法:
 
 
#include <iostream>
#define lowbit(t)(-t&t)
using namespace std ; const int MAX = 100001;
int prime[MAX],tree[MAX],num[MAX];
void update(int x,int val)
{
for(int i = x;i < MAX;i += lowbit(i))
tree[i] += val;
}
int GetSum(int x)
{
int sum=0;
for(int i = x;i > 0;i -= lowbit(i))
sum += tree[i];
return sum;
}
int main()
{
int cnt=0;
for(int i=2;i<MAX;i++) if(!prime[i])
{
num[cnt++]=i;
for(int j=i;i<318&&j*i<MAX;j++)
prime[i*j]=1;
}
for(int i=1;i<cnt;i++)
if(num[i]-num[i-1]==2)
update(num[i],1);
int n;
while(cin>>n,n>=0)
{
if(!n) cout<<"0"<<endl;
else cout<<GetSum(n)<<endl;
}
return 0;
}

Twin Prime Conjecture(浙大计算机研究生保研复试上机考试-2011年)的更多相关文章

  1. hdu 3792 Twin Prime Conjecture 前缀和+欧拉打表

    Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. 2011年浙大:Twin Prime Conjecture

    Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)

    开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. HDU3792---Twin Prime Conjecture(树状数组)

    Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题

    题目地址:http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果 ...

  6. 2017计算机学科夏令营上机考试-C:岛屿面积

    总时间限制:  1000ms 内存限制:  65536kB 描述 用一个n*m的二维数组表示地图,1表示陆地,0代表海水,每一格都表示一个1*1的区域.地图中的格子只能横向或者纵向连接(不能对角连接) ...

  7. 2017计算机学科夏令营上机考试-B编码字符串

    B:编码字符串 总时间限制:  1000ms 内存限制:  65536kB 描述 在数据压缩中,一个常用的方法是行程长度编码压缩.对于一个待压缩的字符串,我们可以依次记录每个字符及重复的次数.例如,待 ...

  8. 2017计算机学科夏令营上机考试-A判决素数个数

    A:判决素数个数 总时间限制:  1000ms 内存限制:  65536kB 描述 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y). 输入 两个整数X和Y(1 <= X,Y <= ...

  9. hdu 3794 Magic Coupon

    浙大计算机研究生保研复试上机考试-2011年  贪心: 注意:输入输出用scanf  printf 可以加快速度,用cin WA #include<iostream> #include&l ...

随机推荐

  1. linux sed 命令

    转载:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...

  2. HDU 1423 Greatest Common Increasing Subsequence

    最长公共上升子序列   LCIS 看这个博客  http://www.cnblogs.com/nuoyan2010/archive/2012/10/17/2728289.html #include&l ...

  3. Oracle 11gR2用gpnp profile存放ASM的spfile路径

    从Oracle 11gR2开始,GI集成了ASM,OCR/VOTEDISK也存放在ASM磁盘组了(11gR2以前需要存放于裸设备中),同时ASM的功能较10g也有很大增强. 我们先引入一个问题:11g ...

  4. 【转】这些编程语言程序员工资最高!Java才第四

    原文网址:http://tech.hexun.com/2016-07-18/185009761.html 在众多行业中,程序员属于高薪职业.无论是在国外还是国内,程序员的薪金水平普遍高于其他行业的工作 ...

  5. 扩容盘、SD卡扩容

    内存卡的前世今生回想当年,大家都还在用着非智能机,由于功能单一,需要存储的数据也就是通讯录和短信.虽然那时也有手机游戏,但大多都是几十KB,并不需要太大的存储空间.但随着手机功能的多样化,尤其是音乐. ...

  6. nginx的配置,要求根据不同的来路域名,发送到不同的端口去处理

    这一台电脑上既有tomcat 也有 apache,他俩是没有办法同时享用80端口的.我现在让tomcat用8088,apache用8080,然后让nginx用80,这样nginx在收到请求后,根据不同 ...

  7. 为我所用之Monkey

    文章由来:有朋友问到Monkey的使用的问题,就整理一下Monkey的基本使用,以备后用查询. Monkey是一Android中的一个命令行工具,eclipse中有自带此工具,可以运行在模拟器以及真实 ...

  8. 提高CSS开发能力的技巧集

    1. 使用:not()给导航条添加间隔线 我们通常使用如下代码给导航条增加间隔线 /* add border */ .nav li { border-right: 1px solid #666; } ...

  9. 2016年JavaScript技术栈展望

    如果你正在筹划新的前端项目或者重构现有项目,那么你需要认识到现在的前端开发环境已经今非昔比,这其中有太多的选择了:React.Flux.Angular.Aurelia.Mocha.Jasmine.Ba ...

  10. java 抽象类和接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...