如何优化计算除数
How to perform optimization of computing divisors?
我有一项任务。我必须计算一个数字的所有整数除数,并将它们写入标准输出。我的程序有效,但在某些情况下会变慢。你知道如何进行优化吗?这是代码:
#include <cstdio>
int main()
{
long n;
scanf("%ld", &n);
printf("1n");
for(long i = 2; i <= int(n/2); i++)
{
if (n % i == 0)
printf("%ldn", i);
}
printf("%ld", n);
}
自然数的除数成对出现:一对的一半是i <= sqrt(n)
,另一半是(n / i) >= sqrt(n)
。因此,您可以循环到n
而不是n/2
的平方根,然后报告i
和n/i
。
[旁白:您使用long
来表示n
,但随后将n/2
强制转换为int
。在使用sizeof(long) > sizeof(int)
的平台上,您会失去精度。]
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- 空基优化子对象的地址
- 什么是使用 opencv::Mat 优化 c++ 矩阵计算
- 优化递归问题以计算超级数字
- C/C++编译器是否会通过重用最近计算的函数结果来优化代码?
- 优化三角矩阵计算的 CUDA 内核执行
- 从第二个导数计算的曲线的SIMD优化
- 只有当循环中更新的变量是局部变量时,计算才会优化
- 优化标志会导致计算错误
- 优化稀疏矩阵中的对数熵计算
- 用于并行计算的C++代码优化示例
- 行列式计算函数的优化
- 我如何优化高斯pdf的计算
- 重复相同计算的优化
- 优化了数组元素的计算和设置
- 如何优化计算除数
- 为什么优化标志 (-O3) 不能加快四倍精度计算的速度?
- 在高度优化的代码中计算代码运行时
- 计算乘数和除数值的优化算法