c++ - 更快的算法来计算有多少数字可以被一个范围内的特定整数整除

标签 c++

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/

相关文章:

c++ - 传递右值引用与非常量左值引用

c++ - 从 WIN32_FIND_DATA 获取完整路径

c++ - 如何阻止 SWIG 为类型宏抛出语法错误(c++ 到 python)

java - 如何用 C/C++ 或 Java 生成真正的贝斯吉他声音?

c++ - 如果在重载的输出运算符函数中使用 cout 怎么办?

c++ - 构造函数初始化一个子对象数组?

c++ - 乘以无符号短会导致未定义的行为吗?

c++ - 如何检查迭代器是否已初始化?

python - Swig Python 模块中的 C++ 内存泄漏

汇编中的 C++ 类函数