计算在C ++中除数等于K的 <N个数

我们给了两个数字N和K。目标是找到1到N之间具有等于[[,N]]中的K除数的除数。

我们将首先计算范围[1,N]中的K的除数,然后将其存储在变量count中。

现在我们将从i = 1到i = N开始。现在,对于每个数字num = i(使得i!= K),将num的除数计数在范围[1,N]中。并将它们的出现存储在变量除数中。

如果除数=计数,则num在[1,N]范围内具有与K相同的除数。这些数字的增量计数。

让我们通过示例来理解。

输入-N = 5,K = 2

输出-除数等于K-1的<N个数的计数

说明-

Between 1 and 5, 2 has divisors 1,2 only. count=2
1 has only 1 divisor which is 1
3 has divisors 1,3 → 2
4 has divisors 1,2,4 → 3
1 number 3 has 2 divisors like K=2.

输入-N = 15,K = 10

输出-除数等于K-3的<N个数的计数

说明-

Between 1 and 15, 10 has divisors 1,10 only. count=2
Similarly 6, 8, 14 have only 2 divisors.

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

  • 我们将N和K作为整数。

  • 函数countDivisibles(int n,int k,)以N和K作为参数,并返回除数与K相等的<N之间的数字。

  • 将初始计数设为0。对于除数<k of n。

  • 将初始numcount设为0。对于除数与k相同的数字。

  • 使用for循环,从i = 1到i <n。如果k%i == 0,则增加计数。

  • 现在count的k除数的数量<n

  • 再次使用for循环,从i = 1到i <n。对于每个num = i(使其不等于k),将除数的初始计数作为变量除数,即0。

  • 现在在i = 1和i <n之间找到num%i == 0,如果是,则增加除数。最后,除数将有num个小于n的除数。

  • 检查除数是否等于计数。如果为true,则增量变量numcount会存储除数等于k的<n个数的计数。

  • 在两个循环结束时返回numcount作为结果。

示例

#include <bits/stdc++.h>
using namespace std;
int countDivisibles(int n, int k){
   int count = 0;
   int numcount=0;
   for (int i = 1; i < n;i++ ){
      if (k % i == 0)
         { count++; }
   }
   //现在count的除数为k-
   // cout<<count<<endl;
   for(int i=1;i<n;i++){
      int num;
      if(i!=k){
         num=i;
         int divisors=0;
         for(int j=1;j<n;j++){
            if(num%j==0)
               { divisors++; }
         }
         //cout<<endl<<num<<" "<<divisors;
         if(divisors==count)
            { numcount++; }
         }
      }
   return numcount;
}
int main(){
   int N = 50, K = 6;
   cout<<endl<<"Numbers < N which have equal divisors as K:"<<countDivisibles(N,K);
   return 0;
}

输出结果

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

Numbers < N which have equal divisors as K:14
猜你喜欢