Un número de Woodall es de la forma:
W n = n.2 n – 1
Los primeros números de Woodall son: 1, 7, 23, 63, 159, 383, 895……
Dado un número X. La tarea es verificar si X es el número de woodall o no.
Ejemplos:
Input : X = 383 Output : Yes For n = 6, Wn = n.2n - 1 = 383. Input : X = 200 Output : No
- Podemos observar que todos los números de Woodall son impares. Entonces, antes que nada, verificamos si el número dado es impar o no.
- Ahora, para verificar si el número es woodall o no, incrementa el número dado en 1 y ahora divide el número entre 2 hasta que sea par y cuenta el número de veces que es divisible. Y en cada punto verifique si el conteo es igual al número o no.
A continuación se muestra la implementación de este enfoque:
C++
// CPP program to check if a number is // Woodall or not. #include <bits/stdc++.h> using namespace std; bool isWoodall(int x) { // If number is even, return false. if (x % 2 == 0) return false; // If x is 1, return true. if (x == 1) return true; x++; // Add 1 to make x even // While x is divisible by 2 int p = 0; while (x % 2 == 0) { // Divide x by 2 x = x/2; // Count the power p++; // If at any point power and // x became equal, return true. if (p == x) return true; } return false; } // Driven Program int main() { int x = 383; (isWoodall(x)) ? (cout << "Yes" << endl) : (cout << "No" << endl); return 0; }
Java
// JAVA program to check if a number // is Woodall or not. class GFG { static boolean isWoodall(int x) { // If number is even, return false. if (x % 2 == 0) return false; // If x is 1, return true. if (x == 1) return true; x++; // Add 1 to make x even // While x is divisible by 2 int p = 0; while (x % 2 == 0) { // Divide x by 2 x = x / 2; // Count the power p++; // If at any point power and // x became equal, return true. if (p == x) return true; } return false; } // Driven Program public static void main(String args[]) { int x = 383; if(isWoodall(x)) System.out.println("Yes"); else System.out.println("No"); } } /*This code is contributed by Nikita Tiwari.*/
Python
# Python program to check if a number # is Woodall or not. def isWoodall(x) : # If number is even, return false. if (x % 2 == 0) : return False # If x is 1, return true. if (x == 1) : return True x = x + 1 # Add 1 to make x even # While x is divisible by 2 p = 0 while (x % 2 == 0) : # Divide x by 2 x = x/2 # Count the power p = p + 1 # If at any point power and # x became equal, return true. if (p == x) : return True return False # Driven Program x = 383 if(isWoodall(x)) : print "Yes" else : print "No" # This code is contributed by Nikita Tiwari.
C#
// C# program to check if a number // is Woodall or not. using System; class GFG { static bool isWoodall(int x) { // If number is even, return false. if (x % 2 == 0) return false; // If x is 1, return true. if (x == 1) return true; x++; // Add 1 to make x even // While x is divisible by 2 int p = 0; while (x % 2 == 0) { // Divide x by 2 x = x / 2; // Count the power p++; // If at any point power and // x became equal, return true. if (p == x) return true; } return false; } // Driver Code public static void Main() { int x = 383; if(isWoodall(x)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by Nikita Tiwari.
PHP
<?php // PHP program to check // if a number is // Woodall or not. function isWoodall($x) { // If number is even, // return false. if ($x % 2 == 0) return false; // If x is 1, // return true. if ($x == 1) return true; // Add 1 to // make x even $x++; // While x is // divisible by 2 $p = 0; while ($x % 2 == 0) { // Divide x by 2 $x = $x/2; // Count the power $p++; // If at any point power and // x became equal, return true. if ($p == $x) return true; } return false; } // Driver Code $x = 383; if(isWoodall($x)) echo "Yes" ; else echo "No" ; // This code is contributed by anuj_67. ?>
Javascript
<script> // Javascript program to check // if a number is // Woodall or not. function isWoodall(x) { // If number is even, // return false. if (x % 2 == 0) return false; // If x is 1, // return true. if (x == 1) return true; // Add 1 to // make x even x++; // While x is // divisible by 2 let p = 0; while (x % 2 == 0) { // Divide x by 2 x = x/2; // Count the power p++; // If at any point power and // x became equal, return true. if (p == x) return true; } return false; } // Driver Code let x = 383; if(isWoodall(x)) document.write("Yes") ; else document.write("No") ; // This code is contributed by _saurabh_jaiswal </script>
Producción:
Yes
Complejidad de tiempo: O (log n) ya que while loop se ejecutará para log n veces
Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA