按平方根的小数部分查找数字

时间:2014-08-05 11:22:14

标签: algorithm math integer-arithmetic

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

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

示例:

如果我们有0,4142135623730950488016887242097,我们能否发现它是2的平方根的小数部分 或者0,418286444621616658231167581代表1234567890 第二个问题的答案很简单,因为,假设我们有50个小数,可能的整数平方根的数量远远超过小数部分的10 ^ 50-1可能值,所以不止一个答案

我非常感谢你的帮助或任何研究课程。

1 个答案:

答案 0 :(得分:0)

你已经回答了第二个问题。没有没有独特的解决方案。

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

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

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

    • 从1到M
    • 迭代整数
    • 将小数部分添加到每个部分
    • 取2的幂,看看下一个整数值的接近程度
    • 如果下一个整数值非常接近,则取其平方根计数器检查结果
    • 一旦找到正确的整数就停止
  • 选项C:缓存:

    • 预先计算所有整数的小数部分,并将它们存储在HashMap中。
    • 使用HashMap快速查找结果
    • 考虑一下:由于你的数据量非常大,不同的小数部分可能会产生相同的哈希值,这会破坏这个选项。