Twin Prime Conjecture

一、题目

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

Inputcopy Outputcopy

1

5

20

-2

0

1

4

二、分析

预处理ans数组,最后输出只需要O(1)的复杂度

Twin Prime指的是相差为2 的素数

20以内的素数:

2 3 5 7 11 13 17 19

其中有以下4对Twin Prime:(2,5),(5,7),(11,13),(17,19)

cpp 复制代码
#include<iostream>
using namespace std;
const int N=1e5+5;
int a[N];
int ans[N];
int main()
{
    for(int i=2;i<=N/i;i++)
    {
        for(int j=i*i;j<N;j+=i)
        {
            a[j]=1;//表示不是素数
        }
    }
    int cnt=0;
    a[0]=1,a[1]=1;
    for(int i=2;i<=N;i++)
    {
        if(a[i]==0&&a[i-2]==0) cnt++;
        ans[i]=cnt;
    }
    int n;
    while(cin>>n&&n>=0)
    {
        cout<<ans[n]<<endl;
    }
}
相关推荐
ysu_03142 小时前
05 | 持久化撤销提示非核心功能
算法·游戏程序
ysu_03142 小时前
06 | 200个单元测试C项目也能TDD
c语言·单元测试·tdd
浮沉9874 小时前
二分查找算法概述&通用模板
算法
Keven_114 小时前
算法札记:SPFA判负环算法的证明
算法
什巳5 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
Jerry5 小时前
LeetCode 347. 前 K 个高频元素
算法
Young Doro5 小时前
SAC 算法
线性代数·算法·机器学习
罗超驿5 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法