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