如何获取数字平方根的化简根式形式而非小数结果?
实现根式化简的思路与代码示例
核心逻辑是对输入的正整数做质因数分解,把指数≥2的质因子提取到根号外,剩余无法提取的部分保留在根号内即可。
核心实现步骤
- 特殊值预处理:输入为0直接返回0,输入为负数抛出异常
- 初始化两个变量:
outside存储根号外的系数,初始值为1;inside存储根号内剩余的数,初始值为输入值 - 从2开始遍历到√inside:
- 每次判断当前数i的平方是否能整除inside
- 可整除时,
outside乘以i,inside除以i的平方,重复判断直到i²无法整除inside为止
- 遍历完成后做结果格式化:inside为1时直接返回outside,outside为1时省略前缀只返回√inside,其余情况拼接为
outside√inside的格式
JavaScript 代码示例
function simplifySqrt(n) { if (n < 0) throw new Error("输入不能为负数"); if (n === 0) return "0"; let outside = 1; let inside = n; // 遍历到根号inside即可,减少计算量 for (let i = 2; i * i <= inside; i++) { while (inside % (i * i) === 0) { outside *= i; inside /= i * i; } } // 适配常规书写习惯格式化结果 if (inside === 1) return outside.toString(); if (outside === 1) return `√${inside}`; return `${outside}√${inside}`; } // 测试用例 console.log(simplifySqrt(343)); // 输出 7√7 console.log(simplifySqrt(16)); // 输出 4 console.log(simplifySqrt(12)); // 输出 2√3 console.log(simplifySqrt(7)); // 输出 √7
内容的提问来源于stack exchange,提问作者Paritosh Tripathi
相关产品推荐
相关产品推荐

