【发布时间】:2016-05-29 21:48:21
【问题描述】:
我正在编写一个非常简单的程序来检查一个数字是否可以整除另一个数字:
// use the divider squared to reduce iterations
for(divider = 2; (divider * divider) <= number; divider++)
if(number % divider == 0)
print("%d can divided by %d\n", number, divider);
现在我很好奇这项任务是否可以通过找到数字的平方根并将其与除法器进行比较来完成。但是,似乎 sqrt() 并不能真正提高效率。如何在 C 中处理 sqrt() 以及如何提高 sqrt() 的效率?另外,有没有其他方法可以更有效地解决问题?
还有,
number % divider == 0
用于测试除法器是否可以均匀地除数,除了使用%之外还有没有更有效的测试方法?
【问题讨论】:
-
@RSahu 我不相信这是一个正确的副本。请重新打开。
-
@FUZxxl,我被标题偏颇了。
-
通过更多研究,您可能会将您的问题改写为:“什么是查找整数的所有因子的有效算法?”我想你会发现这是一个相当深奥的问题,在这个论坛上已经讨论过很多次了……
-
在 google 中搜索“为什么浮点运算比整数运算慢”会产生很多有趣的链接。
-
另一方面,余数至少比乘法多花费 10 倍的时间,所以在理想情况下你不会节省很多时间。
标签: c algorithm math primes square-root