计算所有小于10 ^ 6的最小素数为N C ++的数字
我们给定一个质数,例如num,任务是计算所有小于10^6且最小质数等于num的数字的计数。
例如
Input − num = 7Output − Number of prime factors = 38095Input − num = 3Output − Number of prime factors = 16666
以下程序中使用的方法如下
输入数字,例如num
从i到2开始循环,并且i应当小于或等于最大值并增加i的值
在循环内部,检查s_prime[i]=0
创建循环,将j设置为i*2,并且j应当小于等于max,并将j设置为j+i
现在检查s_prime[j]=1
设置s_prime[j]=1
s_count[i]增加1
打印结果
示例
#include <bits/stdc++.h> using namespace std; #define MAX 1000000 //质数筛子 //计算素数 int s_prime[MAX + 4] = { 0 }, s_count[MAX + 4] = { 0 }; void create_sieve(){ //由于1不是质数 s_prime[1] = 1; //创建筛子 for (int i = 2; i <= MAX; i++){ //如果我是素数 if (s_prime[i] == 0){ for (int j = i * 2; j <= MAX; j += i){ //如果我是最不重要的因素 if (s_prime[j] == 0){ //数字j不是质数 s_prime[j] = 1; //计算最小素数的数字 //我是 s_count[i]++; } } } } } int main(){ //创建筛子 create_sieve(); int N = 7; cout << "Number of prime factors = " << (s_count[N] + 1) << endl; N = 3; cout << "Number of prime factors = " << (s_count[N] + 1) << endl; return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Number of prime factors = 38095 Number of prime factors = 166667