6

我有一个由两个问题组成的数学问题:

  • 我们能找到一个数字 N 只知道它的平方根的小数部分直到一个精度(只知道小数部分的近似值,因为小数部分永远不会结束)
  • 答案是独一无二的吗?这意味着我们不会找到平方根十进制值相等的两个整数(例如前 50)。

例子:

如果我们有 0,4142135623730950488016887242097,我们能找到它是 2 的平方根的小数部分还是 0,418286444621616658231167581 对于 1234567890 第二个问题的答案很简单,因为假设我们有 50 位小数,可能整数的个数' root 远远超过小数部分的 10^50-1 个可能值,因此会有多个答案。

我非常感谢您的帮助或任何研究轨道。

4

1 回答 1

0

您已经自己回答了第二个问题。不,没有唯一的解决方案。

对于第一个问题,我不知道快速的数学解决方案,而是一些非性能编程解决方案:

  • 选项 A:蛮力法:遍历所有整数,并将每个整数的平方根与您的数字进行比较。

  • 选项 B:更棘手的蛮力方法,性能更高,但仍然很慢:

    • 迭代从 1 到 M 的整数
    • 将您的小数部分添加到每个部分
    • 取二的幂,看看下一个整数值有多接近
    • 如果下一个整数值非常接近,取它的平方根来反查结果
    • 找到正确的整数后立即停止
  • 选项 C:缓存:

    • 预先计算所有整数的小数部分并将它们存储在 HashMap 中。
    • 使用HashMap快速查找结果
    • 考虑:由于您有大量数据,不同的小数部分可能会导致相同的哈希值,这会破坏此选项。
于 2014-08-05T11:49:43.263 回答