在C ++中打印所有小于或等于N的半素数
在这个问题中,我们得到一个整数N。我们必须打印所有小于或等于N的半素数。
在解决此问题之前,让我们了解什么是半素数。
半质数是一个数字,其值是两个不同质数的乘积。
让我们举个例子
21=3*7是半素数。
25=5*5不是半素数。
现在,让我们以小于或等于n的半素数为例。
Input: N = 15 Output: 6 10 14 15
为了解决这个问题,我们必须取每个小于N的数字,并检查它是否恰好具有两个不同的素数。
提示-我们也可以从6开始算法,因为最小的半素数是6。
示例
#include <bits/stdc++.h>
using namespace std;
vector<int>generateSemiPrimeNumbers(int n){
int index[n + 1];
for (int i = 1; i <= n; i++)
index[i] = i;
int countDivision[n + 1];
for (int i = 0; i < n + 1; i++)
countDivision[i] = 2;
for (int i = 2; i <= n; i++) {
if (index[i] == i && countDivision[i] == 2) {
for (int j = 2 * i; j <= n; j += i) {
if (countDivision[j] > 0) {
index[j] = index[j] / i;
countDivision[j]--;
}
}
}
}
vector<int> semiPrime;
for (int i = 2; i <= n; i++) {
if (index[i] == 1 && countDivision[i] == 0) semiPrime.push_back(i);
}
return semiPrime;
}
int main(){
int n = 15;
cout<<"Semi-prime numbers less that or equal to "<<n<<"are :\n";
vector<int>semiPrime = generateSemiPrimeNumbers(n);
for (int i = 0; i < semiPrime.size(); i++)
cout<<semiPrime[i]<<"\t";
return 0;
}输出结果
小于或等于15的半素数为-
6 10 14 15
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短