#include <cstdio>
#include <cmath>
#include <cassert>
bool isPrime(int x){
assert(x >= 0);
if (x == 1) return false;
//以下方法中 i * i 可能溢出,所以用新方法
//for(int i = 2; i * i < x; ++i){
// if(x % i == 0){
// return false;
// }
//}
int m = floor(sqrtf(x) + 0.5);
for (int i = 2; i <= m; ++i){
if (x % i == 0){
return false;
}
}
return true;
}
int main(int argc, char *argv[]){
int x;
scanf("%d", &x);
for (int i = 5; i < x; ++i){
if (isPrime(i - 2) && isPrime(i)){
printf("%d %d\n", i - 2, i);
}
}
return 0;
}
算法竞赛入门经典 例题4-2孪生素数
最新推荐文章于 2024-08-11 16:15:49 发布