Número Magnánimo es un número de al menos 2 cifras tal que la suma obtenida insertando un “+” entre su cifra en cualquier posición da un número primo.
Por ejemplo:
4001 es el Número Magnánimo porque los números 4+001=5, 40+01=41 y 400+1=401 son todos números primos.
Comprobar si N es un número magnánimo
Dado un número N , la tarea es verificar si N es un número magnánimo o no. Si N es un número magnánimo, escriba «Sí», de lo contrario, escriba «No».
Ejemplos:
Entrada: N = 4001
Salida: Sí
Explicación:
4+001=5, 40+01=41 y 400+1=401 son todos números primos.Entrada: N = 18
Salida: No
Acercarse:
- Convierte el número N en string
- Atraviesa la cuerda y encuentra toda la parte izquierda y derecha de la cuerda.
- Convierta la parte izquierda y la parte derecha de la string en un número entero y verifique si la suma de la parte izquierda y la parte derecha no es un número primo y luego devuelva falso
- De lo contrario, devuelva verdadero al fin
Por ejemplo, si N = 4001
parte izquierda + parte derecha = número primo
4+001=5 = número primo
40+01=41 número primo
400+1=401 número primo
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation to check // if a number is Magnanimous #include <bits/stdc++.h> using namespace std; // Function to check if n is prime 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 to check if the number is // Magnanimous or not bool isMagnanimous(int N) { // converting the number to string string s = to_string(N); // finding length of string int l = s.length(); // number should not be of single digit if (l < 2) return false; // loop to find all left and right // part of the string for (int i = 0; i < l - 1; i++) { string left = s.substr(0, i + 1); string right = s.substr(i + 1); int x = stoi(left); int y = stoi(right); if (!isPrime(x + y)) return false; } return true; } // Driver Code int main() { int N = 12; isMagnanimous(N) ? cout << "Yes" : cout << "No"; return 0; }
Java
// Java implementation to check // if a number is Magnanimous class GFG{ // Function to check if n is prime 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 to check if the number is // Magnanimous or not static boolean isMagnanimous(int N) { // Converting the number to string String s = Integer.toString(N); // Finding length of string int l = s.length(); // Number should not be of single digit if (l < 2) return false; // Loop to find all left and right // part of the string for(int i = 0; i < l - 1; i++) { String left = s.substring(0, i + 1); String right = s.substring(i + 1); int x = Integer. valueOf(left); int y = Integer. valueOf(right); if (!isPrime(x + y)) return false; } return true; } // Driver code public static void main(String[] args) { int N = 12; if(isMagnanimous(N)) System.out.print("Yes\n"); else System.out.print("No\n"); } } // This code is contributed by shubham
Python3
# Python3 implementation to check # if a number is Magnanimous # Function to check if n is prime 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 to check if the number is # Magnanimous or not def isMagnanimous(N): # Converting the number to string s = str(N) # Finding length of string l = len(s) # Number should not be of single digit if (l < 2): return False # Loop to find all left and right # part of the string for i in range(l - 1): left = s[0 : i + 1] right = s[i + 1 : ] x = int(left) y = int(right) if (not isPrime(x + y)): return False return True # Driver code N = 12 if isMagnanimous(N): print("Yes") else: print("No") # This code is contributed by divyeshrabadiya07
C#
// C# implementation to check // if a number is Magnanimous using System; class GFG{ // Function to check if n is prime 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 to check if the number is // Magnanimous or not static bool isMagnanimous(int N) { // Converting the number to string String s = N.ToString(); // Finding length of string int l = s.Length; // Number should not be of single digit if (l < 2) return false; // Loop to find all left and right // part of the string for(int i = 0; i < l - 1; i++) { String left = s.Substring(0, i + 1); String right = s.Substring(i + 1); int x = int.Parse(left); int y = int. Parse(right); if (!isPrime(x + y)) return false; } return true; } // Driver code public static void Main(String[] args) { int N = 12; if(isMagnanimous(N)) Console.Write("Yes\n"); else Console.Write("No\n"); } } // This code is contributed by amal kumar choubey
Javascript
<script> // Javascript implementation to check // if a number is Magnanimous // Function to check if n is prime 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 to check if the number is // Magnanimous or not function isMagnanimous(N) { // Converting the number to string let s = N.toString(); // Finding length of string let l = s.length; // Number should not be of single digit if (l < 2) return false; // Loop to find all left and right // part of the string for(let i = 0; i < l - 1; i++) { let left = s.substring(0, i + 1); let right = s.substring(i + 1); let x = parseInt(left); let y = parseInt(right); if (!isPrime(x + y)) return false; } return true; } let N = 12; if(isMagnanimous(N)) document.write("Yes"); else document.write("No"); // This code is contributed by mukesh07. </script>
Yes
Complejidad de tiempo: O(n)
Referencia: http://www.numbersaplenty.com/set/magnanimous_number/