int a,b,c,d=0;
cin>>a>>b>>c;
for (int i=a;i<=b;i++)
{
if (i%c==0){d++;}
}
cout<<d;
所以这是代码,a..b
是数字范围,c
是除数,d
是数的倍数c
。例如当a=5, b=15, c=3
时,d
等于4
,因为"6, 9, 12, 15"是5到15之间的倍数。
我需要找到更快的方法来执行此操作,有人可以帮忙吗?
最佳答案
一种方法是这样做(不需要循环):
int lower = (a + c - 1) / c; // find lowest divisor (round up)
int upper = b / c; // find higher divisor (round down)
d = upper - lower + 1; // get no of divisors
对于您的示例,lower
将为 2,upper
将为 5,使 d
等于 4。
关于c++ - 更快的算法来计算有多少数字可以被一个范围内的特定整数整除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777546/