gpt4 book ai didi

math - 如何找到一个整数乘数以达到 10 的幂?

转载 作者:行者123 更新时间:2023-12-04 07:49:57 26 4
gpt4 key购买 nike

我正在尝试创建一个精确的十进制数字类型。我将其存储为理性 p/q哪里q始终为 10 的幂。
现在,如果我尝试除以这些数字之一,我需要查看结果是否可以表示为有限十进制扩展。例如 10.2 / 80 => 0.1275没关系,但是 10 / 3 = 3.333...不行。
归结为看一个整数 q并询问:是否有整数 m使得:

q * m = 10 ^ n    (q, m, n are all integers)
我可以写一个循环来搜索它,测试 n=0,1,2,3,...?但是有没有更直接的方法呢?我不知道如何代数求解那个小方程。

最佳答案

首先要看q能否写成2s和5s的乘积;如果可以,将有 m 和 n 的整数解。否则,不会有。
我们可以找到整数 a、b 和 c,使得 q = (2^a)(5^b)c 并且 c 不能被 2 或 5 整除。只要 q 仍然可以被2、每次递增a;然后,除以 5 并增加 b,只要 q 仍然可以被 5 整除;那么,在这个重复除以 2 和 5 的过程之后,c 将是 q 的任何值。
此时,如果c = 1,我们就可以找到解;否则,没有整数 m 有效。假设 c = 1,检查 a 和 b:

  • 如果 a = b,q 已经是 10 的幂;选择 m = 1
  • 如果 a < b,选择 m = 2^(b-a)
  • 如果 a > b,则选择 m = 5^(a-b)
  • 关于math - 如何找到一个整数乘数以达到 10 的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67034965/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com