计算C ++中主要因子仅为2和3的范围内的数字

我们提供了两个数字START和END来定义数字范围。目的是找到仅包含2和3作为其主要因子并且在[START,END]范围内的数字。

我们将通过从START到END遍历数字来做到这一点,对于每个数字,我们将检查该数字是否只能被2和3整除。如果可以整除,则将其除以并减小。如果没有,请打破循环。最后,如果数量减少到1,那么它的因子只有2和3。

让我们通过示例来理解。

输入值 

START=20 END=25

输出结果 

仅以2和3为主要因子的数字: 1

说明 

Prime factors of each number:
20 = 2*2*5
21 = 3*7
22 = 2*11
23 = 1*23
24 = 2*2*2*3
25 = 5*5
Only 24 has 2 and 3 as prime factors.

输入值 

START=1000 END=1500

输出结果 

仅以2和3为主要因子的数字: 4

说明 

1024 1152 1296 1458 are the numbers with only 2 and 3 as prime factors

以下程序中使用的方法如下

  • 我们将整数START和END用作范围变量。

  • 函数twothreeFactors(int start,int end)接受范围变量,并返回只有2和3作为素数的数字计数。

  • 对于此类数字,将初始变量计数设为0。

  • 使用for循环遍历数字范围。我=开始我=结束

  • 现在,对于每个数字num = i,使用while循环检查num%2 == 0,然后将其除。

  • 如果num%3 == 0,则将其除。如果不是两者都打破了while循环

  • 如果while循环后num为1,则增加计数。

  • 在所有循环的末尾,计数将只有总数为2和4作为主要因子的总数。

  • 返回计数结果。

示例

#include <bits/stdc++.h>
using namespace std;
int twothreeFactors(int start, int end){
   //从2开始,这样就不会计数1-
   if (start == 1)
      { start++; }
   int count = 0;
   for (int i = start; i <= end; i++) {
      int num = i;
      while(num>1){
         //如果被2整除,则除以2-
         if(num % 2 == 0)
            { num /= 2; }
         //如果被3整除,则将其除以3-
         else if (num % 3 == 0)
            { num /= 3; }
         else //if divisible by neither 2 nor 3 break
            { break; }
      }
      //表示只有2和3是num的因数
      if (num == 1)
         { count++; }
   }
   return count;
}
int main(){
   int START = 10, END = 20;
   cout <<"仅以2和3为主要因子的数字:"<< twothreeFactors(START,END);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

仅以2和3为主要因子的数字:3