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 are6 : 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