在 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

更新于: 2021 年 4 月 22 日

275 次浏览

开启你的职业生涯

完成该课程以获得认证

立即开始
广告