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