在 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 次瀏覽

開始你的職業

完成課程並獲得認證

開始
廣告