在 C++ 中获取 1/n 十进制值中周期的长度


假设我们有一个数字 n。我们必须找到 1/n 十进制值中周期的长度。因此,如果 n 的值为 7,则 1/7 = 0.142857142857… 其中加粗部分为重复部分。所以这里的周期长度为 6。

对于一个数字 n,输出中可能有 n 个不同的余数,但周期可能不会从第一个余数开始,因为一些初始余数不会重复。所以我们必须确保选择了周期中的一个余数,从第 (n+1) 个余数开始,并开始寻找下一个出现余数的位置。第 (n+1) 个余数和下一个出现余数之间的距离就是周期的长度。

示例

 在线演示

#include<iostream>
using namespace std;
int periodLength(int n) {
   int remainder = 1;
   int length = 0;
   for (int i = 1; i <= n+1; i++)
   remainder = (10*remainder) % n;
   int d = remainder;
   do {
      remainder = (10*remainder) % n;
      length++;
   } while(remainder != d);
      return length;
}
int main() {
   int n = 7;
   cout << "Period length of 1/"<<n<<" is: " << periodLength(n) << endl;
}

输出

Period length of 1/7 is: 6

更新于: 18-Dec-2019

544 次浏览

开始你的职业

完成课程并获得认证

开始
广告