Números primos – Part 3

  • Un número primo es un número natural mayor que 1 , que solo es divisible por 1 y por sí mismo. Los primeros números primos son: 2 3 5 7 11 13 17 19 23 …..

Algunos datos interesantes sobre los números primos 

  • Dos es el único número primo par.
  • Cada número primo se puede representar en forma de 6n+1 o 6n-1 excepto el número primo 2 y 3, donde n es un número natural.
  • Dos y tres son solo dos números naturales consecutivos que son primos.
  • Conjetura de Goldbach: Todo número par mayor que 2 se puede expresar como la suma de dos números primos.
  • Teorema de Wilson: El teorema de Wilson establece que un número natural p > 1 es un número primo si y solo si
(p - 1) ! ≡  -1   mod p 
OR  (p - 1) ! ≡  (p-1) mod p
an-1 ≡ 1 (mod n)
OR 
an-1 % n = 1
  • Teorema de los números primos : La probabilidad de que un número n dado, elegido al azar, sea primo es inversamente proporcional a su número de dígitos, o al logaritmo de n.
  • Conjetura de Lemoine : Cualquier entero impar mayor que 5 puede expresarse como la suma de un primo impar (todos los primos excepto 2 son impares) y un semiprimo par. Un número semiprimo es el producto de dos números primos. Esto se llama la conjetura de Lemoine.

¿Cómo comprobamos si un número es primo o no? 

Solución ingenua .  :
Una solución ingenua es iterar a través de todos los números desde 2 hasta sqrt (n) y para cada número verificar si divide n. Si encontramos algún número que divide, devolvemos falso.

C++14

// A school method based C++ program to
// check if a number is prime
#include <bits/stdc++.h>
using namespace std;
 
// function check whether a number
// is prime or not
bool isPrime(int n)
{
    // Corner case
    if (n <= 1)
        return false;
 
    // Check from 2 to square root of n
    for (int i = 2; i <= sqrt(n); i++)
        if (n % i == 0)
            return false;
 
    return true;
}
 
// Driver Code
int main()
{
    isPrime(11) ? cout << " true\n" : cout << " false\n";
    return 0;
}

Java

// A school method based Java program to
// check if a number is prime
import java.util.*;
import java.lang.*;
 
class GFG {
 
    // Check for number prime or not
    static boolean isPrime(int n)
    {
 
        // Check if number is less than
        // equal to 1
        if (n <= 1)
            return false;
 
        // Check if number is 2
        else if (n == 2)
            return true;
 
        // Check if n is a multiple of 2
        else if (n % 2 == 0)
            return false;
 
        // If not, then just check the odds
        for (int i = 3; i <= Math.sqrt(n); i += 2)
        {
            if (n % i == 0)
                return false;
        }
        return true;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        if (isPrime(19))
            System.out.println("true");
 
        else
            System.out.println("false");
    }
}
 
// This code is contributed by Ronak Bhensdadia

Python3

# A school method based Python3 program
# to check if a number is prime
 
# function check whether a number
# is prime or not
 
#import sqrt from math module
from math import sqrt
 
def isPrime(n):
 
    # Corner case
    if (n <= 1):
        return False
 
    # Check from 2 to sqrt(n)
    for i in range(2, int(sqrt(n))+1):
        if (n % i == 0):
            return False
 
    return True
 
 
# Driver Code
if isPrime(11):
    print("true")
else:
    print("false")
 
# This code is contributed by Sachin Bisht

C#

// A school method based C# program to
// check if a number is prime
using System;
 
class GFG {
    // function check whether a
    // number is prime or not
    static bool isPrime(int n)
    {
        // Corner case
        if (n <= 1)
            return false;
 
        // Check from 2 to sqrt(n)
        for (int i = 2; i < Math.Sqrt(n); i++)
            if (n % i == 0)
                return false;
 
        return true;
    }
 
    // Driver Code
    static void Main()
    {
        if (isPrime(11))
            Console.Write(" true");
 
        else
            Console.Write(" false");
    }
}
 
// This code is contributed by Sam007

PHP

<?php
// A school method based PHP program to
// check if a number is prime
 
// function check whether a number
// is prime or not
function isPrime($n)
{
    // Corner case
    if ($n <= 1)
        return false;
 
    // Check from 2 to n-1
    for ($i = 2; $i < $n; $i++)
        if ($n % $i == 0)
            return false;
 
    return true;
}
 
// Driver Code
if(isPrime(11))
    echo("true");
else
    echo("false");
 
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// A school method based Javascript program to
// check if a number is prime
 
  
// function check whether a number
// is prime or not
function isPrime(n)
{
    // Corner case
    if (n <= 1)
        return false;
  
    // Check from 2 to n-1
    for (let i = 2; i < n; i++)
        if (n % i == 0)
            return false;
  
    return true;
}
  
// Driver Code
 
    isPrime(11) ? document.write(" true" + "<br>") : document.write(" false" + "<br>");
 
// This code is contributed by Mayank Tyagi
 
</script>
Producción

 true

Complejidad del tiempo: O(sqrt(n)) , Espacio auxiliar y complejidad del espacio: O(1)

Enfoque más eficaz:

En el enfoque anterior, si el tamaño del número dado es demasiado grande, su raíz cuadrada también será muy grande, por lo que para manejar entradas de gran tamaño, trataremos con pocos números como 1, 2, 3 y los números que son divisibles por 2 y 3 en casos separados y para los números restantes iteraremos nuestro bucle de 5 a sqrt(n) y comprobaremos en cada iteración si esa (iteración) o (esa iteración+2) divide n o no. Si encontramos algún número que divide, devolvemos falso.

C++

// A school method based C++ program to
// check if a number is prime
#include <bits/stdc++.h>
using namespace std;
 
// function check whether a number
// is prime or not
bool isPrime(int n)
{
    // Check if n=1 or n=0
    if (n <= 1)
        return false;
    // Check if n=2 or n=3
    if (n == 2 || n == 3)
        return true;
    // Check whether n is divisible by 2 or 3
    if (n % 2 == 0 || n % 3 == 0)
        return false;
    // Check from 5 to square root of n
    // Iterate i by (i+6)
    for (int i = 5; i <= sqrt(n); i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Driver Code
int main()
{
    isPrime(11) ? cout<<"true\n" : cout<<"false\n";
    return 0;
}
//  This code is contributed by Suruchi kumari

C

// A school method based C program to
// check if a number is prime
#include <stdio.h>
#include<math.h>
// function check whether a number
// is prime or not
int isPrime(int n)
{
    // Check if n=1 or n=0
    if (n <= 1)
        return 0;
    // Check if n=2 or n=3
    if (n == 2 || n == 3)
        return 1;
    // Check whether n is divisible by 2 or 3
    if (n % 2 == 0 || n % 3 == 0)
        return 0;
    // Check from 5 to square root of n
    // Iterate i by (i+6)
    for (int i = 5; i <= sqrt(n); i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return 0;
 
    return 1;
}
 
// Driver Code
int main()
{
    if (isPrime(11) == 1)
        printf("true\n");
    else
       printf("false\n");
    return 0;
}
// This code is contributed by Suruchi Kumari

Java

// Java program to check whether a number
class GFG
{
   
// Function check whether a number
// is prime or not
public static boolean isPrime(int n)
{
   if (n <= 1)
        return false;
   
    // Check if n=2 or n=3
    if (n == 2 || n == 3)
        return true;
   
    // Check whether n is divisible by 2 or 3
    if (n % 2 == 0 || n % 3 == 0)
        return false;
   
    // Check from 5 to square root of n
    // Iterate i by (i+6)
    for (int i = 5; i <= Math.sqrt(n); i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
  
    return true;    
    
}
 
// Driver Code  
public static void main(String[] args)
{
    if (isPrime(11))
    {
        System.out.println("true");
    }
    else
    {
        System.out.println("false");
    }
}
}
 
// This code is contributed by Sayan Chatterjee

Producción :

true

Complejidad del tiempo: O(sqrt(n))

Espacio auxiliar y complejidad del espacio : O(1)

Usando recursividad:

La recursividad también se puede usar para comprobar si un número entre 2 y n – 1 divide a n. Si encontramos algún número que divide, devolvemos falso.

C++

// C++ program to check whether a number
// is prime or not using recursion
#include <iostream>
using namespace std;
 
// function check whether a number
// is prime or not
bool isPrime(int n)
{
    static int i = 2;
 
    // corner cases
    if (n == 0 || n == 1) {
        return false;
    }
 
    // Checking Prime
    if (n == i)
        return true;
 
    // base cases
    if (n % i == 0) {
        return false;
    }
    i++;
    return isPrime(n);
}
 
// Driver Code
int main()
{
 
    isPrime(35) ? cout << " true\n" : cout << " false\n";
    return 0;
}
 
// This code is contributed by yashbeersingh42

Java

// Java program to check whether a number
// is prime or not using recursion
class GFG{
     
static int i = 2;
  
// Function check whether a number
// is prime or not
public static boolean isPrime(int n)
{
     
    // Corner cases
    if (n == 0 || n == 1)
    {
        return false;
    }
   
    // Checking Prime
    if (n == i)
        return true;
         
    // Base cases
    if (n % i == 0)
    {
        return false;
    }
    i++;
    return isPrime(n);
}
 
// Driver Code  
public static void main(String[] args)
{
    if (isPrime(35))
    {
        System.out.println("true");
    }
    else
    {
        System.out.println("false");
    }
}
}
 
// This code is contributed by divyeshrabadiya07

Python3

# Python3 program to check whether a number
# is prime or not using recursion
 
# Function check whether a number
# is prime or not
def isPrime(n, i):
     
    # Corner cases
    if (n == 0 or n == 1):
        return False
     
    # Checking Prime 
    if (n == i):
        return True
     
    # Base cases
    if (n % i == 0):
        return False
     
    i += 1
     
    return isPrime(n, i)
 
# Driver Code
if (isPrime(35, 2)):
  print("true")
else:
  print("false")
   
#  This code is contributed by bunnyram19

C#

// C# program to check whether a number
// is prime or not using recursion
using System;
class GFG {
     
    static int i = 2;
     
    // function check whether a number
    // is prime or not
    static bool isPrime(int n)
    {
      
        // corner cases
        if (n == 0 || n == 1) {
            return false;
        }
      
        // Checking Prime
        if (n == i)
            return true;
      
        // base cases
        if (n % i == 0) {
            return false;
        }
        i++;
        return isPrime(n);
    }
   
  static void Main() {
    if(isPrime(35))
    {
        Console.WriteLine("true");
    }
    else{
        Console.WriteLine("false");
    }
  }
}
 
// This code is contributed by divyesh072019

Javascript

<script>
      // JavaScript program to check whether a number
      // is prime or not using recursion
 
      // function check whether a number
      // is prime or not
      function isPrime(n) {
        var i = 1;
 
        // corner cases
        if (n == 0 || n == 1) {
          return false;
        }
 
        // Checking Prime
        if (n == i) return true;
 
        // base cases
        if (n % i == 0) {
          return false;
        }
        i++;
        return isPrime(n);
      }
 
      // Driver Code
 
      isPrime(35) ? document.write(" true\n") : document.write(" false\n");
       
      // This code is contributed by rdtank.
    </script>
Producción

 false

Complejidad de tiempo: O(N) , Complejidad de espacio: O(N) 

Algoritmos para encontrar todos los números primos menores que el N. 

Más problemas relacionados con Número primo 

Publicación traducida automáticamente

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