在这个问题中,我们得到了一个数字,我们的任务是检查该数字是否为Woodall数字。
Woodall数字是一种特殊的数字,其形式为
Wn = n.2n -1
第一5伍德尔号码1,7,23,63,159
让我们举个例子来了解这个问题,
X = 159
输出结果
Yes
为了解决这个问题,我们将观察该数字,如果该数字是偶数,则它不能是Woodall,然后检查该数字。要进行检查,请将数字加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