时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目描述
两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。
输入
一个正整数n。1<=n<=10000。
输出
按照从小到大的顺序输出所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
样例输入
100
样例输出
3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73
数据范围限制
1<=n<=10000。
题记:
素数判定函数值得保存下来。
C++程序如下:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
// 试除法判断一个整数是否为素数
int isnotprime(int n)
{
if(n % 2 == 0)
return 0;
int end = sqrt(n), i;
for(i=3; i<=end; i+=2) {
if(n % i == 0)
break;
}
return i > end ? 1 : 0;
}
int main(void){
int n;
cin >> n;
for(int i=3; i<n-2; i++)
if(isnotprime(i) && isnotprime(i+2))
cout << i << " " << i+2 << endl;
return 0;
}