计算所有小于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