Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số Woodall trong C++


Trong bài toán này, chúng ta được cho một số và nhiệm vụ là kiểm tra xem số đó có phải là số Woodall hay không.

Số Woodall là loại số đặc biệt có dạng,

Wn = n.2n -1

5 số Woodall đầu tiên là 1, 7, 23, 63, 159

Hãy xem ví dụ để hiểu bài toán,

Đầu vào

X = 159

Đầu ra

Yes

Để giải bài toán này, chúng ta sẽ quan sát số, nếu số chẵn thì không thể là Woodall và sau đó kiểm tra số. Để kiểm tra, cộng số với 1 và chia đệ quy số cho 2. Sau mỗi lần chia đếm số lần nó chia hết. Và tại mỗi điểm kiểm tra nếu đếm bằng số.

Chương trình triển khai giải pháp,

Ví dụ

#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<<" là số Woodall":cout<<" không phải số Woodall";    return 0; }

Đầu ra

1424 không phải số Woodall