查找小于或等于C ++中给定数字的最大特殊素数
假设我们有一个数字n。我们必须找到小于或等于N的最大特殊质数。特殊质数是一个数字,可以通过将数字一个接一个地放置来创建,因此所有得到的数字都是质数。
在这里,我们将使用筛网筛网。我们将创建数量为n的筛子阵列。然后,通过检查数字是否为质数,从数字N开始迭代返回。如果是素数,请检查它是否是特殊素数。
示例
#include<iostream>
using namespace std;
bool isSpecialPrime(bool sieve[], int num) {
while (num) {
if (!sieve[num]) {
return false;
}
num /= 10;
}
return true;
}
void findSpecialPrime(int N) {
bool sieve[N + 10];
for(int i = 0; i<N+10; i++){
sieve[i] = true;
}
sieve[0] = sieve[1] = false;
for (long long i = 2; i <= N; i++) {
if (sieve[i]) {
for (long long j = i * i; j <= N; j += i) {
sieve[j] = false;
}
}
}
while (true) {
if (isSpecialPrime(sieve, N)) {
cout << N << '\n';
break;
}
else
N--;
}
}
int main() {
cout << "Special prime in range (2 -> 400): ";
findSpecialPrime(400);
cout << "Special prime in range (2 -> 100): ";
findSpecialPrime(100);
}输出结果
Special prime in range (2 -> 400): 379 Special prime in range (2 -> 100): 79
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短