23073 素数对

题目描述

两个相差为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
数据范围与提示 分类标签

[函数]

C++题解代码

#include <bits/stdc++.h>
using namespace std;

int a;
bool b;


bool fn2(int y) {
  int d = sqrt(y);
  for (int j = 2; j <= d; j++) {
    if ((y%j) == 0) {
      return false;
    }
  }
  return true;
}

// The main procedure
int main() {
  cin>>a;
  b = true;
  for (int i = 2; i <= (a-2); i++) {
    if (fn2(i)) {
      if (fn2((i+2))) {
        if (b) {
          b = false;
        } else {
          cout<<'\n';
        }
        cout<<i;
        cout<<" ";
        cout<<(i+2);
      }
    }
  }
  if (b) {
    cout<<"empty";
  }
  return 0;
}

Blockly题解代码图片