C++ 中的伍德沃爾數


在演算法題中,給定一個數字,我們的任務是檢查該數字是否是伍德沃爾數字。

伍德沃爾數字是一種特殊型別的數字,其形式為:

Wn = n.2n -1

前 5 個伍德沃爾數字是1、7、23、63、159

我們舉一個例子來理解演算法題:

輸入

X = 159

輸出

Yes

為了解決演算法題,我們將觀察該數字,如果該數字為偶數,則它不可能是伍德沃爾數字,然後檢查該數字。要檢查,將數字加 1,並遞迴地將數字除以 2。在每次除法後,計算其可被整除的次數。在每個點檢查該次數是否等於該數字。

程式顯示了我們解決方案的實現:

示例

 現場演示

#include <iostream>
using namespace std;
bool isWoodallNumber(int x){
   if (x % 2 == 0)
      return false;
   if (x == 1)
      return true;
   x+= 1;
   int p = 0;
   while(x%2 == 0){
      x = x/2;
      p++;
      if (p == x)
         return true;
   }
   return false;
}
int main() {
   int x = 1424;
   cout<<x;
   (isWoodallNumber(x))?cout<<" is a Woodal Number":cout<<" is not a Woodal Number";
   return 0;
}

輸出

1424 is not a Woodal Number

更新於:17-7-2020

180 檢視

開啟你的 職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.