Bei einer gegebenen positiven ganzen Zahl N besteht die Aufgabe darin, zu prüfen, ob N eine schwache Primzahl ist oder nicht.

In der Zahlentheorie ist eine schwache Primzahl eine Primzahl, die kleiner ist als das arithmetische Mittel der nächsten Primzahlen, dh nächster und vorheriger Primzahlen.
Die ersten paar schwachen Primzahlen sind 3, 7, 13, 19, 23, 31, 43, 47, 61, …
Eine schwache Primzahl P n kann dargestellt werden als

wobei n sein Index in der geordneten Menge von Primzahlen ist.

Beispiele:

Eingabe: N = 13
Ausgabe: Ja
13 ist die 6. Primzahl, das arithmetische Mittel der 5. und 7. Primzahl, dh 11 und 17, ist 14.
13 ist kleiner als 14, also ist 13 eine schwache Primzahl.

Eingang: N = 11
Ausgang: Nein

 

Sich nähern:

  • Wenn N keine Primzahl ist oder es die erste Primzahl ist, dh 2 , dann drucke No .
  • Anderenfalls finde die Primzahlen, die N am nächsten sind (eine links und eine rechts), und speichere ihren arithmetischen Mittelwert in mean .
    • Wenn N < Mittel, dann drucke Ja .
    • Sonst drucke Nr .

Unten ist die Implementierung des obigen Ansatzes:

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>

 
 

Ausgabe: 
ja

 

Falls Sie an Live-Kursen mit Experten teilnehmen möchten , beziehen Sie sich bitte auf DSA Live-Kurse für Berufstätige und Competitive Programming Live for Students .