我们定义,如果 a 和 a + 2 都是素数(如 5 和 7 ),那么我们就称 a 和 a + 2 是一对孪生素数。请写一个程序找出 2 -N之间的所有孪生素数。
输入格式
一个整数N( 2 < N < 1000)。
输出格式
若干行,每行两个整数,即一对孪生素数。
输入样例
10
输出样例
3 5
5 7
#include <iostream>
#include <cmath>
bool isprime(int x)
{
if (x < 2)
return false;
int n = static_cast<int>(std::sqrt(x));
for (int i = 2; i <= n; i++)
if (x % i == 0)
return false;
return true;
}
int main()
{
int n;
std::cin >> n;
for (int i = 2; i <= n - 2; i++)
if (isprime(i) && isprime(i + 2))
std::cout << i << ' ' << i + 2 << '\n';
return 0;
}
```c++
#include<iostream>
using namespace std;
bool prime(int n) {
int i;
for (i = 2; i <= sqrt(n); i++) {
if ((n % i) == 0)
return false;
}
return true;
}
int main()
{
int N; cin >> N;
for (int i = 2; i < N; i++)
{
if (prime(i) ==1&& prime(i + 2) == 1)
cout << i <<" "<< i + 2<<endl;
}
}
```
#include<iostream>
bool is_prime(int n)
{
const int max = static_cast<int>(std::sqrt(n));
for (int i = 2; i <= max; i++)
{
if (n % i == 0)
return false;
}
return true;
}
int main()
{
int n;
std::cin >> n;
bool prime[1000];
for (int i = 3; i <= n; ++i)
{
prime[i] = is_prime(i);
}
for (int i = 3; i < n - 1; ++i)
{
if (prime[i] && prime[i + 2])
std::cout << i << ' ' << i + 2 << std::endl;
}
return 0;
}