1007. 素数对猜想 (20)

来源:互联网 发布:阿里云英文缩写 编辑:程序博客网 时间:2024/04/30 04:20

1007. 素数对猜想 (20)

让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。

输入格式:每个测试输入包含1个测试用例,给出正整数N。

输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:

20

输出样例:

4

//温故知新,修改于2016.7.30#include<iostream>using namespace std;int main(){    int num;    cin>>num;    int nums[100000]={0};    for(int i=2;i<=num/2;i++){        for(int j=2*i;j<=num;j+=i)            nums[j-1]=1;    }    int count=0;    for(int i=0;i<num-2;i++)        if(nums[i]==0&&nums[i+2]==0&&nums[i+1]==1)            count++;    cout<<count<<endl;    return 0;}
#include<iostream>#include<math.h>using namespace std;bool ifPrime(double num){    float mut=0.5;    float n=pow((float)num,mut);    for(int i=2;i<=n;i++)    {        for(int j=2;j<=num/2;j++)        {            if(i*j==num)                return false;        }    }    return true;}int main(){    cout<<"please input a number."<<endl;    int data;    cin>>data;    int num=0;    for(int i=2;i<=data;i++)    {        if(ifPrime(i))        {            if(((i+2)<=data)&&ifPrime(i+2))                num++;        }    }    cout<<num<<endl;    return 0;}

其实这个题目没什么难度,有一个地方我一直不对:

    float mut=0.5;    float n=pow((float)num,mut);

开始的时候,我直接写成

    int n=pow(num,1/2);

发现结果一直报错,原来

//C++提供以下几种pow函数的重载形式:double pow(double X,int Y);float pow(float X,float Y);float pow(float X,int Y);long double pow(long double X,long double Y);long double pow(long double X,int Y);
0 0
原创粉丝点击