Compruebe si N es un número primo débil o no

Dado un entero positivo N , la tarea es comprobar si N es un primo débil o no.

En teoría de números, un primo débil es un número primo que es menor que la media aritmética de los números primos más cercanos, es decir, los números primos siguientes y anteriores.
Los primeros números primos débiles son 3, 7, 13, 19, 23, 31, 43, 47, 61, …
Un primo débil P n se puede representar como-

donde n es su índice en el conjunto ordenado de números primos.

Ejemplos:

Entrada: N = 13
Salida:
, 13 es el sexto número primo, la media aritmética del quinto y el séptimo número primo, es decir, 11 y 17 es 14.
13 es menor que 14, por lo que 13 es un número primo débil.

Entrada: N = 11
Salida: No

 

Acercarse:

  • Si N no es un número primo o es el primer número primo, es decir , 2 , imprima No.
  • De lo contrario, encuentre los primos más cercanos a N (uno a la izquierda y otro a la derecha) y almacene su media aritmética en mean .
    • Si N < significa entonces imprimir .
    • De lo contrario , imprima No.

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

C++14

// C++ program to check
// if a given number is weak prime
#include <bits/stdc++.h>
using namespace std;
 
// Utility function to check
// if a number is prime or not
bool isPrime(int n)
{
     
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for(int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that returns true
// if n is a weak prime
bool isWeakPrime(int n)
{
     
    // If n is not a prime number or
    // n is the first prime then return false
    if (!isPrime(n) || n == 2)
        return false;
 
    // Initialize previous_prime to n - 1
    // and next_prime to n + 1
    int previous_prime = n - 1;
    int next_prime = n + 1;
 
    // Find next prime number
    while (!isPrime(next_prime))
        next_prime++;
 
    // Find previous prime number
    while (!isPrime(previous_prime))
        previous_prime--;
 
    // Arithmetic mean
    int mean = (previous_prime +
                next_prime) / 2;
 
    // If n is a weak prime
    if (n < mean)
        return true;
    else
        return false;
}
 
// Driver code
int main()
{
    int n = 13;
 
    if (isWeakPrime(n))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}
 
// This code is contributed by himanshu77

Java

// Java program to check
// if a given number is weak prime
import java.util.*;
class GFG{
 
// Utility function to check
// if a number is prime or not
static boolean isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that returns true
// if n is a weak prime
static boolean isWeakPrime(int n)
{
    // If n is not a prime number or
    // n is the first prime then return false
    if (!isPrime(n) || n == 2)
        return false;
 
    // Initialize previous_prime to n - 1
    // and next_prime to n + 1
    int previous_prime = n - 1;
    int next_prime = n + 1;
 
    // Find next prime number
    while (!isPrime(next_prime))
        next_prime++;
 
    // Find previous prime number
    while (!isPrime(previous_prime))
        previous_prime--;
 
    // Arithmetic mean
    int mean = (previous_prime +
                next_prime) / 2;
 
    // If n is a weak prime
    if (n < mean)
        return true;
    else
        return false;
}
 
// Driver code
public static void main(String args[])
{
    int n = 13;
 
    if (isWeakPrime(n))
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by Code_Mech

Python3

# Python3 program to check if a given
# number is weak prime
 
# Utility function to check
# if a number is prime or not
def isPrime(n):
     
    # Corner cases
    if (n <= 1):
        return False
    if (n <= 3):
        return True
 
    # This is checked so that we can skip
    # middle five numbers in below loop
    if (n % 2 == 0 or n % 3 == 0):
        return False
 
    i = 5
    while (i * i <= n):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
        i = i + 6
 
    return True
 
# Function that returns true
# if n is a weak prime
def isWeakPrime(n):
 
    # declaring variables as global
    global next_prime, previous_prime
 
    # If n is not a prime number or n is
    # the first prime then return false
    if(not isPrime(n) or n == 2):
        return False
 
    # Initialize previous_prime to n - 1
    # and next_prime to n + 1
    previous_prime = n - 1
    next_prime = n + 1
 
    # Find next prime number
    while(not isPrime(next_prime)):
        next_prime += 1
 
    # Find previous prime number
    while (not isPrime(previous_prime)):
        previous_prime -= 1
 
    # Arithmetic mean
    mean = (previous_prime + next_prime) // 2
 
    # If n is a weak prime
    if(n < mean):
        return True
    else:
        return False
 
# Driver code
if __name__ == '__main__':
 
    n = 13
 
    if(isWeakPrime(n)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by Shivam Singh

C#

// C# program to check if a given number is weak prime
using System;
class GFG {
 
    // Utility function to check
    // if a number is prime or not
    static bool isPrime(int n)
    {
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;
 
        // This is checked so that we can skip
        // middle five numbers in below loop
        if (n % 2 == 0 || n % 3 == 0)
            return false;
 
        for (int i = 5; i * i <= n; i = i + 6)
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
 
        return true;
    }
 
    // Function that returns true
    // if n is a weak prime
    static bool isWeakPrime(int n)
    {
        // If n is not a prime number or
        // n is the first prime then return false
        if (!isPrime(n) || n == 2)
            return false;
 
        // Initialize previous_prime to n - 1
        // and next_prime to n + 1
        int previous_prime = n - 1;
        int next_prime = n + 1;
 
        // Find next prime number
        while (!isPrime(next_prime))
            next_prime++;
 
        // Find previous prime number
        while (!isPrime(previous_prime))
            previous_prime--;
 
        // Arithmetic mean
        int mean = (previous_prime
                    + next_prime)
                   / 2;
 
        // If n is a weak prime
        if (n < mean)
            return true;
        else
            return false;
    }
 
    // Driver code
    public static void Main()
    {
        int n = 13;
 
        if (isWeakPrime(n))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}

Javascript

<script>
    // Javascript program to check 
    // if a given number is weak prime 
     
    // Utility function to check 
    // if a number is prime or not 
    function isPrime(n) 
    { 
 
        // Corner cases 
        if (n <= 1)
            return false; 
        if (n <= 3) 
            return true; 
 
        // This is checked so that we can skip 
        // middle five numbers in below loop 
        if (n % 2 == 0 || n % 3 == 0) 
            return false; 
 
        for(let i = 5; i * i <= n; i = i + 6) 
            if (n % i == 0 || n % (i + 2) == 0) 
                return false; 
 
        return true; 
    } 
 
    // Function that returns true 
    // if n is a weak prime 
    function isWeakPrime(n) 
    { 
 
        // If n is not a prime number or 
        // n is the first prime then return false 
        if (!isPrime(n) || n == 2) 
            return false; 
 
        // Initialize previous_prime to n - 1 
        // and next_prime to n + 1 
        let previous_prime = n - 1; 
        let next_prime = n + 1; 
 
        // Find next prime number 
        while (!isPrime(next_prime)) 
            next_prime++; 
 
        // Find previous prime number 
        while (!isPrime(previous_prime)) 
            previous_prime--; 
 
        // Arithmetic mean 
        let mean = (previous_prime + 
                    next_prime) / 2; 
 
        // If n is a weak prime 
        if (n < mean) 
            return true; 
        else
            return false; 
    } 
     
    let n = 13; 
   
    if (isWeakPrime(n)) 
        document.write("Yes"); 
    else
        document.write("No"); 
 
// This code is contributed by divyesh072019.
</script>
Producción: 

Yes

 

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 *