Primas Woodall

Los números primos de Woodall son números primos que también son números de Woodall .
 

Encuentra los números primos de Woodall menores que N

Dado un número N , imprima todos los números primos de Woodall menores o iguales que N. 
Ejemplos: 
 

Entrada: N = 10 
Salida: 7
Entrada: N = 500 
Salida: 7, 23, 383 
 

Planteamiento: La idea es utilizar la Criba de Eratóstenes para comprobar que un número es primo o no de manera eficiente. Luego, itere sobre números enteros de 1 a N, y para cada número verifique si es primo o no y si es un número de Woodall o no. Si un número es primo también un número de Woodall , entonces es un número primo de Woodall.
 

A continuación se muestra la implementación del algoritmo anterior:

Python3

# Python3 implementation to print all Woodall 
# primes smaller than or equal to n. 
    
# Function to check if a number
# N is Woodall  
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
       
# Function to generate all primes and checking 
# whether number is Woodall or not 
def printWoodallPrimesLessThanN(n):
       
    # Create a boolean array "prime[0..n]" and 
    # initialize all entries it as true. A value 
    # in prime[i] will finally be false if i is 
    # Not a prime, else true. 
    prime = [True] * (n + 1); 
    p = 2;
    while (p * p <= n):
           
        # If prime[p] is not changed, 
        # then it is a prime 
        if (prime[p]): 
               
            # Update all multiples of p 
            for i in range(p * 2, n + 1, p): 
                prime[i] = False;
        p += 1;
           
    # Print all Woodall prime numbers 
    for p in range(2, n + 1): 
           
        # checking whether the given number 
        # is prime Woodall or not 
        if (prime[p] and isWoodall(p)): 
            print(p, end = " "); 
       
# Driver Code 
n = 1000;
printWoodallPrimesLessThanN(n)
Producción: 

7 23 383

 

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *