PAT BASIC 1007

来源:互联网 发布:hexo博客绑定域名 编辑:程序博客网 时间:2024/05/16 12:44

思路:

此题没有什么特别要注意的点,就是先用筛法求出n一下所有的素数,然后线性判断相邻的差是否为2

代码:

#include<iostream>#include<math.h>using namespace std;int state[100001];int prime[20000];void findPrime(int n);void findPrime(int n){    int i, j;    for (i = 2; i <= n; i++)    {        if (state[i])            continue;        prime[0]++;        prime[prime[0]] = i;        if (i<=(int)(sqrt(n)))            for (j = i*i; j <= n; j = j + i)                state[j] = 1;    }}int main(){    int n, i, j;    int ans = 0;    cin >> n;    for (i = 2; i <= n; i++)        state[i] = 0;//0表示 是素数    prime[0] = 0;    findPrime(n);    for (i = 1; i < prime[0]; i++)        if (prime[i + 1] - prime[i] == 2)            ans++;    cout << ans;    //while (1)    //{    //}    return 0;}
0 0
原创粉丝点击