首页 > 学院 > 开发设计 > 正文

PAT BASIC 1007

2019-11-11 05:04:19
字体:
来源:转载
供稿:网友

思路:

此题没有什么特别要注意的点,就是先用筛法求出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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表