69,373
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
bool isPrime(int n) {
// 是否存在因子
for (int i = 2; i*i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int f[20];
f[0] = f[1] = 1;
for (int i = 2; i < 20; i++) {
f[i] = f[i - 1] + f[i - 2];
}
int n;
while (cin >> n) {
int center = f[n];
cout << "该项为" << center << endl;
cout << "最近质数为:";
for (int i = 1;; i++) { // 从中心往两边找
if (center - i >= 2 && isPrime(center - i)) {
cout << center - i << endl;
break;
}
if (isPrime(center + i)) {
cout << center + i << endl;
break;
}
}
}
return 0;
}