- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道如何找到给定整数(1 除外)的除数:
let smallest_divisor n =
let rec aux n i =
if i < (n / 2) then n
else if (i mod n == 0) then n
else aux n (i + 1)
in aux n 2;;
但是我如何找到它的除数(除了它本身)?
最佳答案
一种方法是从 n/2
开始,而不是从 2
开始并通过 (i + 1)
向上工作通过(i - 1)
向下工作。
另一种方法是根据 smallest_divisor
编写 biggest_divisor
:
let biggest_divisor n = n / smallest_divisor n ;;
<小时/>
编辑添加:在平均情况下,第二种方法实际上更有效,因为小除数比大除数更接近于n/2。 (如果 2 不是除数,则下一个可能的最小除数是 3,这是您尝试的下一个除数;如果n/2 不是除数,则下一个最大的可能除数是n/3,这涉及到迭代n/6种可能性。)
在评论中,您写道,出于某种原因,您不希望 biggest_divisor
依赖于 smallest_divisor
。就我个人而言,我认为这是一个错误;但如果您对此有强烈的感觉,那么您最好的选择可能是模仿 n/smallest_divisor n
方法,从 2
迭代,然后返回 n/i
当你找到除数时。
顺便说一句,您可以通过在 i * i > n
时立即中止而不是等到 i > n/2
来提高这两种方法的性能。这样你只需要尝试 √n 个 i 可能的值,而不是 n/2 i 可能的值>,在检测到 n 是素数之前。
关于Javascript 除数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61213336/
我遇到了一个问题,想要了解更多信息以及如何避免。我有这个代码 len :: (Num r ) => [a] -> r len [] = 0 len xs = 1 + len ( tail xs ) a
我知道如何找到给定整数(1 除外)的除数: let smallest_divisor n = let rec aux n i = if i 编辑添加:在平均情况下,第二种方法
这个问题已经有答案了: Why does integer division code give the wrong answer? [duplicate] (4 个回答) 已关闭去年。 在 Java
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26). scala> 1.0 / Doub
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
如何使用转换将数字列表除以 2?我以为这段代码可以做到,但它只将整个列表的数字 1 除以 2,所以我一定完全误解了这一点。有人能帮助我吗? :) list v(5, 1); list d; d.res
我目前正在研究如何使用各种现代处理器的快速单精度浮点倒数功能来计算基于定点 Newton-Raphson 迭代的 64 位无符号整数除法的起始近似值。它需要尽可能准确地计算 264/除数,其中初始近似
我是一名优秀的程序员,十分优秀!