C++程序在给定范围内查找具有K个奇数除数的数字

在这个问题中,我们给出了三个整数值,L、R 和 k。我们的任务是在给定范围内找到具有 K 个除数的数字。我们将找到范围 [L, R] 中恰好有 k 个除数的数字的计数。我们将计算 1 和数字本身作为除数。

让我们举个例子来理解这个问题,

输入

a = 3, b = 10, k = 4
输出结果
2

解释

Numbers with exactly 3 divisors within the range 3 to 10 are

6 : divisors = 1, 2, 3, 6 8 : divisors = 1, 2, 4, 8

解决方法

该问题的一个简单解决方案是计算 k 个除数。因此,我们将计算范围内所有数字的除数数。如果 k 中的除数计数,我们将在数字计数上加 1。

程序来说明我们的解决方案的工作,

示例

#include<bits/stdc++.h>

using namespace std;

int countDivisors(int n) {

   int divisors = 0;

   for (int i=1; i<=sqrt(n)+1; i++) {

      if (n%i==0) {

         divisors++;

         if (n/i != i)

            divisors ++;

      }

   }

   return divisors;

}

int countNumberKDivisors(int a,int b,int k) {

   int numberCount = 0;

   for (int i=a; i<=b; i++) {

      if (countDivisors(i) == k)

         numberCount++;

   }

   return numberCount;

}

int main() {

   int a = 3, b = 10, k = 4;

   cout<<"与数字的计数 "<<k<<" divisors is "<<countNumberKDivisors(a, b, k);

   return 0;

}

输出结果
与数字的计数 4 divisors is 2

以上是 C++程序在给定范围内查找具有K个奇数除数的数字 的全部内容, 来源链接: utcz.com/z/341449.html

回到顶部