Dado un número de n dígitos. El punto primo es el índice del dígito cuyos números del lado izquierdo y derecho
son primos. Imprime todos los puntos primos del número. Si no existe ningún punto primo imprima -1.
Ejemplos:
Input : 2317 Output : 1 2 Explanation : Left and right side numbers of index point 1 are 2 and 17 respectively and both are primes. Left and right side numbers of index point 2 are 23 and 7 respectively and both are prime. Input : 2418 Output : -1 Explanation : No index point has both the left and right side numbers as prime. Note: First and last index can never be a prime point as they do not have left and right side numbers pair.
Algoritmo
Count number of digits of the given number, n. If count == 1 || count == 2 print "Not Possible" Else { For index points = 1 to (count - 1) { Calculate left number(L) and right number(R) If both L and R are prime print index point i } } How to find L and R for an index point 'i'? L = n / (10(count-i)) R = n % (10(count-i-1))
La verificación de números primos se basa en el método escolar optimizado
C++
// C++ program to print all prime points #include <bits/stdc++.h> using namespace std; // Function to count number of digits int countDigits(int n) { int count = 0; while (n > 0) { count++; n = n/10; } return count; } // Function to check whether a number is // prime or not. Returns 0 if prime else -1 int checkPrime(int n) { // Corner cases if (n <= 1) return -1; if (n <= 3) return 0; // This is checked so that we can skip // middle five numbers in below loop if (n%2 == 0 || n%3 == 0) return -1; for (int i=5; i*i<=n; i=i+6) if (n%i == 0 || n%(i+2) == 0) return -1; return 0; } // Function to print prime points void printPrimePoints(int n) { // counting digits int count = countDigits(n); // As single and double digit numbers do not // have left and right number pairs if (count==1 || count==2) { cout << "-1"; return; } // Finding all left and right pairs. Printing // the prime points accordingly. Discarding // first and last index point bool found = false; for (int i=1; i<(count-1); i++) { // Calculating left number int left = n / ((int)pow(10,count-i)); // Calculating right number int right = n % ((int)pow(10,count-i-1)); // Prime point condition if (checkPrime(left) == 0 && checkPrime(right) == 0) { cout << i << " "; found = true; } } // No prime point found if (found == false) cout << "-1"; } // Driver Program int main() { int n = 2317; printPrimePoints(n); return 0; }
Java
// Java program to print // all prime points import java.io.*; class GFG { // Function to count // number of digits static int countDigits(int n) { int count = 0; while (n > 0) { count++; n = n / 10; } return count; } // Function to check whether // a number is prime or not. // Returns 0 if prime else -1 static int checkPrime(int n) { // Corner cases if (n <= 1) return -1; if (n <= 3) return 0; // This is checked so that // we can skip middle five // numbers in below loop if (n % 2 == 0 || n % 3 == 0) return -1; for (int i = 5; i * i <= n; i = i + 6) if (n % i == 0 || n % (i + 2) == 0) return -1; return 0; } // Function to print // prime points static void printPrimePoints(int n) { // counting digits int count = countDigits(n); // As single and double // digit numbers do not // have left and right // number pairs if (count == 1 || count == 2) { System.out.print("-1"); return; } // Finding all left and right // pairs. Printing the prime // points accordingly. Discarding // first and last index point boolean found = false; for (int i = 1; i < (count - 1); i++) { // Calculating left number int left = n / ((int)Math.pow(10, count - i)); // Calculating right number int right = n % ((int)Math.pow(10, count - i - 1)); // Prime point condition if (checkPrime(left) == 0 && checkPrime(right) == 0) { System.out.print(i + " "); found = true; } } // No prime point found if (found == false) System.out.print("-1"); } // Driver Code public static void main (String[] args) { int n = 2317; printPrimePoints(n); } } // This code is contributed by ajit
Python3
# python3 program to print all prime points # Function to count number of digits def countDigits(n): count = 0 while (n > 0): count+=1 n = n//10 return count #Function to check whether a number is # prime or not. Returns 0 if prime else -1 def checkPrime(n): # Corner cases if (n <= 1): return -1 if (n <= 3): return 0 # This is checked so that we can skip # middle five numbers in below loop if (n%2 == 0 or n%3 == 0): return -1 i=5 while i*i<=n: if (n%i == 0 or n%(i+2) == 0): return -1 i+=6 return 0 # Function to print prime points def printPrimePoints(n): # counting digits count = countDigits(n) # As single and double digit numbers do not # have left and right number pairs if (count==1 or count==2): print ("-1") return # Finding all left and right pairs. Printing # the prime points accordingly. Discarding # first and last index point found = False for i in range(1,(count-1)): #Calculating left number left = n //(pow(10,count-i)) #Calculating right number right = n % (pow(10,count-i-1)) # Prime point condition if (checkPrime(left) == 0 and checkPrime(right) == 0): print (i ,end=" ") found = True # No prime point found if (found == False): print ("-1") # Driver Program if __name__ == "__main__": n = 2317 printPrimePoints(n)
C#
// C# program to print // all prime points using System; class GFG { // Function to count // number of digits static int countDigits(int n) { int count = 0; while (n > 0) { count++; n = n / 10; } return count; } // Function to check whether // a number is prime or not. // Returns 0 if prime else -1 static int checkPrime(int n) { // Corner cases if (n <= 1) return -1; if (n <= 3) return 0; // This is checked so that // we can skip middle five // numbers in below loop if (n % 2 == 0 || n % 3 == 0) return -1; for (int i = 5; i * i <= n; i = i + 6) if (n % i == 0 || n % (i + 2) == 0) return -1; return 0; } // Function to print // prime points static void printPrimePoints(int n) { // counting digits int count = countDigits(n); // As single and double // digit numbers do not // have left and right // number pairs if (count == 1 || count == 2) { Console.Write("-1"); return; } // Finding all left and right // pairs. Printing the prime // points accordingly. Discarding // first and last index point bool found = false; for (int i = 1; i < (count - 1); i++) { // Calculating left number int left = n / ((int)Math.Pow(10, count - i)); // Calculating right number int right = n % ((int)Math.Pow(10, count - i - 1)); // Prime point condition if (checkPrime(left) == 0 && checkPrime(right) == 0) { Console.Write(i + " "); found = true; } } // No prime point found if (found == false) Console.Write("-1"); } // Driver Code static public void Main () { int n = 2317; printPrimePoints(n); } } // This code is contributed // by akt_mit
PHP
<?php // PHP program to print all prime points // Function to count number of digits function countDigits($n) { $count = 0; while ($n > 0) { $count++; $n = (int)($n / 10); } return $count; } // Function to check whether a // number is prime or not. // Returns 0 if prime else -1 function checkPrime($n) { // Corner cases if ($n <= 1) return -1; if ($n <= 3) return 0; // This is checked so that we // can skip middle five numbers // in below loop if ($n % 2 == 0 || $n % 3 == 0) return -1; for ($i = 5; $i * $i <= $n; $i = $i + 6) if ($n % $i == 0 || $n % ($i + 2) == 0) return -1; return 0; } // Function to print prime points function printPrimePoints($n) { // counting digits $count = countDigits($n); // As single and double digit // numbers do not have left // and right number pairs if ($count == 1 || $count == 2) { echo "-1"; return; } // Finding all left and right pairs. // Printing the prime points accordingly. // Discarding first and last index point $found = false; for ($i = 1; $i < ($count - 1); $i++) { // Calculating left number $left = (int)($n / ((int)pow(10, $count - $i))); // Calculating right number $right = $n % ((int)pow(10, $count - $i - 1)); // Prime point condition if (checkPrime($left) == 0 && checkPrime($right) == 0) { echo $i , " "; $found = true; } } // No prime point found if ($found == false) echo "-1"; } // Driver Code $n = 2317; printPrimePoints($n); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to print // all prime points // Function to count // number of digits function countDigits(n) { let count = 0; while (n > 0) { count++; n = Math.floor(n / 10); } return count; } // Function to check whether // a number is prime or not. // Returns 0 if prime else -1 function checkPrime(n) { // Corner cases if (n <= 1) return -1; if (n <= 3) return 0; // This is checked so that // we can skip middle five // numbers in below loop if (n % 2 == 0 || n % 3 == 0) return -1; for(let i = 5; i * i <= n; i = i + 6) if (n % i == 0 || n % (i + 2) == 0) return -1; return 0; } // Function to print // prime points function printPrimePoints(n) { // Counting digits let count = countDigits(n); // As single and double // digit numbers do not // have left and right // number pairs if (count == 1 || count == 2) { document.write("-1"); return; } // Finding all left and right // pairs. Printing the prime // points accordingly. Discarding // first and last index point let found = false; for(let i = 1; i < (count - 1); i++) { // Calculating left number let left = Math.floor( n / (Math.pow(10, count - i))); // Calculating right number let right = n % (Math.pow( 10, count - i - 1)); // Prime point condition if (checkPrime(left) == 0 && checkPrime(right) == 0) { document.write(i + " "); found = true; } } // No prime point found if (found == false) document.write("-1"); } // Driver Code let n = 2317; printPrimePoints(n); // This code is contributed by avanitrachhadiya2155 </script>
Producción:
1 2
Este artículo es una contribución de Ayush Jauhari . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA