B1007 素数对猜想 (20分)

2020-02-10  本文已影响0人  km15

/*
题意:
1、找出素数对,素数对就是,相邻两个素数差为2的素数

解题:
1、判断是不是素数函数
2、判断i和i+2是不是素数

learn && wrong:
1、sqrt注意是浮点数,需要乘以1.0,同时需要int转换一下
2、sqrt是cmath函数
3、isprime需要从2开始判断,任何数余上1都是0的,1不是素数,已经人为定义了
4、main里面从3开始,因为已经知道2跟3不是素数对了,其实为i=3
5、i和i+2都要在n里面才能算对的!所以条件是i+2<=n
6、i+=2,是为了保持奇数
*/

include <iostream>

include <cmath>

using namespace std;
bool isprime(int n){
if(n <= 1) return false;
int sqr = (int)sqrt(1.0 * n);
for(int i = 2;i <= sqr;++i){ //(!!!)这里错了,任何数余上1都是0,所以从2开始
if(n % i == 0) return false;
}
return true;
}

int main(int argc, char** argv) {
int num;
cin>>num;
int count = 0;
for(int i = 3;i + 2 <= num;i+=2){
if(isprime(i) == true &&isprime(i+2) == true){
++count;
}
}
cout<<count<<endl;
return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读