número pernicioso

Un número pernicioso es un entero positivo que tiene un número primo de unos en su representación binaria . El primer número pernicioso es 3 ya que 3 = (11) (en representación binaria) y 1 + 1 = 2, que es un número primo.
Propiedades de los números perniciosos:
1. No hay ningún número pernicioso que también sea potencia de 2 porque las potencias de dos en forma binaria se representan como un uno seguido de ceros. Por lo tanto, el 1 no se considera un número primo. 
2. Todo número de la forma  2^n   + 1 con n > 0 es un número pernicioso ya que el número de unos en forma binaria es 2 que es primo. 
3. Un número de la forma  2^p   – 1 con p primo es un número pernicioso conocido como número de Mersenne .
 

La idea de imprimir primero n números perniciosos es simple. 
Haz lo siguiente para cada número del 1 al n. 
1) Cuenta los bits establecidos en el número actual 
2) Imprime el número actual si el recuento de bits establecidos es primo. Usamos un control de primalidad simple para este propósito.
Aquí está el programa para imprimir los primeros 25 números perniciosos.
A continuación se muestra la implementación del enfoque anterior. 
 

C++

// CPP program to print first n pernicious numbers
#include <bits/stdc++.h>
using namespace std;
 
// function to check prime number
bool isPrime(int x)
{
    if (x < 2)
        return false;
    for (int i = 2; i < x; i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}
 
// Prints first n Pernicious numbers
void printPernicious(int n)
{
    for (int i=1,count=0; count<n; i++) {
 
        // "__builtin_popcount(i)" count no
        // of ones in binary representation
        if (isPrime(__builtin_popcount(i))) {
            cout << i << " ";
             
            count++;
        }
    }
}
 
int main()
{
   int n = 25;
   printPernicious(n);
   return 0;
}

Java

// Java program to print first
// n pernicious numbers
import java.util.*;
 
class GFG {
    // function to count no of
    // ones in binary representation
    static int countSetBits(int n)
    {
        int count = 0;
         
        while (n > 0)
        {
            n &= (n - 1) ;
            count++;
        }
        return count;
    }
     
    // function to check prime number
    static boolean isPrime(int x)
    {
        if (x < 2)
            return false;
        for (int i = 2; i < x; i++) {
            if (x % i == 0)
                return false;
        }
        return true;
    }
     
    // Prints first n Pernicious numbers
    static void printPernicious(int n)
    {
        for (int i=1,count=0; count<n; i++) {
     
            if (isPrime(countSetBits(i))) {
                System.out.print( i + " ");
                 
                count++;
            }
        }
    }
 
    // Driver Code
    public static void main (String[] args) {
        int n = 25;
        printPernicious(n);
    }
}
 
// This code is contributed by Ansu Kumari

Python3

# Python program to print
# first n pernicious numbers
 
# function to check
# prime number
def isPrime(x):
     
    if x < 2:
        return False
     
    for i in range(2, x):
        if not x % i:
            return False
     
    return True
 
# Prints first n Pernicious
# numbers
def printPernicious(n):
 
    i, count = 1, 0
 
    while count < n:
 
        # "bin(i).count('1')" count
        # no of ones in binary
        # representation
        if (isPrime(bin(i).count('1'))):
            print(i, end=' ')
            count += 1
         
        i += 1
 
# Driver Code
n = 25
printPernicious(n)
 
# This code is contributed by Ansu Kumari

C#

// C#program to print first
// n pernicious numbers
using System;
 
class GFG
{
    // function to count no of
    // ones in binary representation
    static int countSetBits(int n)
    {
        int count = 0;
         
        while (n > 0)
        {
            n &= (n - 1) ;
            count++;
        }
        return count;
    }
     
    // function to check prime number
    static bool isPrime(int x)
    {
        if (x < 2)
            return false;
        for (int i = 2; i < x; i++) {
            if (x % i == 0)
                return false;
        }
        return true;
    }
     
    // Prints first n Pernicious numbers
    static void printPernicious(int n)
    {
        for (int i=1,count=0; count<n; i++) {
     
            if (isPrime(countSetBits(i))) {
                Console.Write( i + " ");
                 
                count++;
            }
        }
    }
 
    // Driver Code
    public static void Main ()
    {
        int n = 25;
        printPernicious(n);
    }
}
 
// This code is contributed by vt_m

PHP

<?php
// PHP program to print first
// n pernicious numbers
 
// function to check prime number
function isPrime($x)
{
    if ($x < 2)
        return false;
    for ($i = 2; $i < $x; $i++)
    {
        if ($x % $i == 0)
            return false;
    }
    return true;
}
//this function count no of
// ones in binary representation
function getBitCount($value)
{
 
    $count = 0;
    while($value)
    {
        $count += ($value & 1);
        $value = $value >> 1;
    }
 
    return $count;
}
 
// Prints first n Pernicious numbers
function printPernicious($n)
{
    for ($i = 1, $count = 0;
                $count < $n; $i++)
    {
 
        //count no of ones in
        // binary representation
        if (isPrime(getBitCount($i)))
        {
            echo $i." ";
             
            $count++;
        }
    }
}
 
// Driver code
$n = 25;
printPernicious($n);
 
// This code is contributed by mits
?>

Javascript

<script>
 
// JavaScript program to print first
// n pernicious numbers
 
    // function to count no of
    // ones in binary representation
    function countSetBits(n)
    {
        let count = 0;
           
        while (n > 0)
        {
            n &= (n - 1) ;
            count++;
        }
        return count;
    }
       
    // function to check prime number
    function isPrime(x)
    {
        if (x < 2)
            return false;
        for (let i = 2; i < x; i++) {
            if (x % i == 0)
                return false;
        }
        return true;
    }
       
    // Prints first n Pernicious numbers
    function printPernicious(n)
    {
        for (let i=1,count=0; count<n; i++) {
       
            if (isPrime(countSetBits(i))) {
                document.write( i + " ");
                   
                count++;
            }
        }
    }
 
// Driver code
 
        let n = 25;
        printPernicious(n);
 
</script>

Producción : 
 

3 5 6 7 9 10 11 12 13 14 17 18 19 20 21 22 24 25 26 28 31 33 34 35 36

Complejidad de tiempo: O(nlogn)
Complejidad de espacio: O(1)
Referencias:  
Wiki
 

Publicación traducida automáticamente

Artículo escrito por Surya Priy 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 *