- 代码如下:
#include<iostream>
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int judge(int a);
int main()
{
int a;
vector<int> b;
b.push_back(1);
cin>>a;
for(int i=2;i<=a; i++)
if(judge(i))
b.push_back(i);
int sum =0;
for(int i = 1 ;i<b.size();i++)
{
if(b[i]-b[i-1]==2)
sum++;
}
cout<<sum;
return 0;
}
int judge(int a)
{
if(a==1||a<0)
return 0;
else
{
for(int i=2; i<=sqrt(a);i++)
{
if(a%i==0)
return 0;
}
}
return 1;
}
上边的方法比较笨,是我自己写的,太笨了。下面是大佬写的程序让人膜拜:
这个方法太秒了。
#include <iostream>
using namespace std;
bool prime(int n) { //判断n是否为素数
if(n == 1) {
return false;
}
for(int i = 2; i * i <= n; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
scanf("%d", &n);
int ret = 0;
for(int i = 2; i + 2 <= n; i++) {
if(prime(i) && prime(i + 2)) { //i和i+2都是素数,则为一对
ret++;
}
}
printf("%d\n", ret);
return 0;
}