用c++实现描述 输入一个正整数n(10<n<10000)n(10<n<10000),输出不超过n的最大超级质数。(要求使用子函数实现) (超级质数含义:输入一个正整数n,如果该数本身是质数,依次从低位去掉一位,二位,……,若所得的各数仍都是素数,则称超级质数。) 题目保证有不超过n的最大超级质数
时间: 2023-11-29 09:04:54 浏览: 40
以下是用 C++ 实现的代码,使用了一个名为 `isPrime()` 的子函数来判断一个数是否为质数:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
for (int i = n; i >= 10; i--) {
int num = i;
bool isSP = true;
while (num > 0) {
if (!isPrime(num)) {
isSP = false;
break;
}
num /= 10;
}
if (isSP) {
cout << i << endl;
break;
}
}
return 0;
}
```
首先输入一个正整数 `n`,然后从 `n` 开始倒序遍历,对于每个数,我们循环将它的个位去掉,判断所得到的数是否为质数,如果有一个不是质数,则该数不是超级质数,终止循环,判断下一个数。如果所有数都是质数,则该数为超级质数,输出并结束程序。