如何实现平方根相乘后以最简根式形式输出非整数结果
平方根乘法最简根式输出实现方案
两个平方根相乘的核心规则是√a * √b = √(a*b),你已经完成了根号内数值相乘的步骤,接下来只需要对乘积做根式化简即可,全程用整数运算不要转浮点数,就能避免非整数结果出错的问题。
核心化简逻辑
任何正整数都可以拆成「完全平方数 * 不含平方因子的数」的形式,比如90 = 9 * 10,其中9是3的平方,10没法再拆出任何大于1的整数的平方因子。对应到根式上,√90 = √(9*10) = 3√10,完全平方数开根号后放到根号外当系数,剩下的无平方因子数留在根号内即可。
具体实现步骤
- 第一步:计算两个根号内数值的乘积,记为
product,注意做好整数类型的溢出判断,避免数值过大超出存储上限 - 第二步:遍历提取乘积里的所有平方因子,计算根号外系数和根号内剩余值,核心逻辑参考如下通用代码:
// 输入:根号下的总乘积num // 输出:coeff为根号外的整数系数,remain为根号内剩余的无平方因子数 def simplify_sqrt(num): coeff = 1 remain = num i = 2 while i * i <= remain: if remain % (i * i) == 0: coeff *= i remain = remain // (i * i) // 除完不递增i,因为可能还能继续提取同一个数的平方因子 else: i += 1 return (coeff, remain)
- 第三步:根据返回的两个值拼接最终结果:
- 若
remain == 1,说明结果是整数,直接输出coeff即可 - 若
coeff == 1,说明没有能提到根号外的整数,直接输出√{remain}即可 - 其余情况输出
{coeff}√{remain}
- 若
示例验证
- 计算√2 * √8:product=16,化简后coeff=4,remain=1,最终输出4
- 计算√6 * √15:product=90,化简后coeff=3,remain=10,最终输出3√10
- 计算√3 * √7:product=21,化简后coeff=1,remain=21,最终输出√21
内容的提问来源于stack exchange,提问作者Praseodymium-141
相关产品推荐
相关产品推荐

