C ++中最大唯一质数的数量
给定任务是找到一个最大素数,该素数可以在[1,N]的范围内给出N。
现在让我们使用示例了解我们必须做的事情-
输入-N = 100
输出-3
说明-让我们在[1,100]范围内取30
30 = 3 * 2 * 5 =唯一素因数。因此,在[1,100]范围内,最多可以找到3个唯一因子。
输入-N = 300
输出-4
在以下程序中使用的方法如下
在功能上,
MaxPrime()
我们将首先检查(N <2)。如果是这样,则只需返回零,否则继续。然后,我们将使用Eratosthenes筛子找出给定数字N之前的所有素数。
初始化两个int类型的变量pro = 1和max = 0分别存储乘积和最终答案。
在Eratosthenes的筛子中,我们将第一组素数相乘,直到乘积保持小于N为止,方法是:-pro = * p;
检查是否(pro> N)。如果是这样,则返回max并将max加1。
在筛子外面,也返回最大值。
示例
#include <bits/stdc++.h>using namespace std;
int MaxPrime(int N){
if (N < 2)
return 0;
//使用Eratosthenes筛
bool Arr[N+1];
memset(Arr, true, sizeof(Arr));
int pro = 1, max = 0;
for (int p=2; p*p<=N; p++){
if (Arr[p] == true){
for (int i=p*2; i<=N; i += p)
Arr[i] = false;
/*Multiply first set of prime numbers while product remains smaller than N*/
pro *= p;
if (pro > N)
return max;
max++;
}
}
return max;
}
//主要功能
int main(){
int N = 300;
cout << MaxPrime(N);
return 0;
}
输出结果
如果运行上面的代码,我们将获得以下输出-
4
以上是 C ++中最大唯一质数的数量 的全部内容, 来源链接: utcz.com/z/338152.html