在 JavaScript 中查找循环小数部分的长度
问题
我们需要编写一个 JavaScript 函数,该函数接收一个数字 num,作为第一个也是唯一的一个参数
我们的函数应该做两件事
- 首先,它应该检查该数字是不是和 10 互质,如果不是,我们应该返回 -1(任何其他数字的互质数字,它们唯一的公因子为 1)。
- 如果该数字和 10 互质,那么我们应该返回小数部分的长度,该小数部分在那个数字除以 1 时会重复出现。
例如,如果函数的输入为 -
输入
const num = 123;
输出
const output = 5;
输出说明
由于数字 123 肯定与 10 互质
当我们将 1 除以 123 时,我们得到 -
1 / 123 = 0.008130081300813…
这清楚地表明小数部分 00813 无限地重复,并且其长度为 5,因此我们的输出是 5。
范例
以下是代码 -
const num = 123; const findRepeatingPart = (num = 1) => { if(num % 2 === 0 || num % 5 === 0){ return -1; } else { let res = 10 % num, count = 1; while(res != 1){ res = res * 10 % num; count++; }; return count; } }; console.log(findRepeatingPart(num));
输出
5
广告