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 + 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 – 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