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: Sí
, 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 Sí .
- 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>
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