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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP