PAT Basic 1007

来源:互联网 发布:网络胜利组op完整版 编辑:程序博客网 时间:2024/04/30 04:15
  1. 素数对猜想 (20)
    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

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

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

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

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

20

输出样例:

4

代码:

#include<iostream>#include<math.h>#include<string.h>using namespace std;int sushu(int k){    int i;    int m=sqrt(k);    for(i=2;i<=m;i++)        if(k%i==0)            return 0;    return 1;}int main(){    int a[10001];    int count=0,n;    cin>>n;    memset(a,0,sizeof(a));    int j=2;    for(int i=1;i<10001;)    {        if(sushu(j)==1)        {            a[i]=j;            j++;            i++;        }        else        {            j++;        }    }    for(int i=1;a[i+1]<=n;i++)    {        if(a[i+1]-a[i]==2)        {            count++;        }        else        continue;    }    cout<<count<<endl;    return 0;}

思路:
做这一题用到了打表法,求素数写了一个函数判定是否是素数,这样会使代码更加清晰。
memset(a,0,sizeof(a));将数组清零,头文件是#include

int sushu(int k){    int i;    int m=sqrt(k);    for(i=2;i<=m;i++)        if(k%i==0)            return 0;    return 1;}

以上是根据概念求素数的方法
关于求素数的算法以后会逐渐接触,继续学习~~

0 0
原创粉丝点击