我们给了两个数字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