C++ 中的第 N 個禮貌數


禮貌數是指可以表示為 2 個或更多連續正數之和的正數。

禮貌數的序列為

3 5 6 7 9 10 11 12 13 14...

有一個公式可以用來找出第 n 個禮貌數。該公式為 n + log2(n + log2(n))。預設日誌的以 e 為底。我們需要使用底數為 2 進行計算。將預設日誌結果除以 log(2) 以獲得以 e 為底的日誌值。

演算法

  • 第 n 個禮貌數的演算法非常簡單。
  • 初始化數字 N。
  • 使用上述公式計算第 n 個禮貌數。
  • 確保在計算第 n 個禮貌數之前將 n 的值增加 1。

實現

以下是使用 C++ 實現上述演算法

#include <bits/stdc++.h>
using namespace std;
double getNthPoliteNumber(double n) {
   n += 1;
   return n + (log((n + (log(n) / log(2.0))))) / log(2.0);
}
int main() {
   double n = 10;
   cout << (int)getNthPoliteNumber(n) << endl;
   return 0;
}

輸出

如果執行以上程式碼,將會得到以下結果。

14

更新時間:2021 年 10 月 22 日

瀏覽 152 次

開啟你的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.