Dado un número N , la tarea es convertir el número dado en una string Cypher sobre la base de las siguientes condiciones:
- Si N es un semiprimo , cambie cada dígito en los lugares pares de N a su correspondiente alfabeto coincidente como se muestra a continuación.
- Si N se puede escribir como una suma de dos números primos , cambie cada dígito en los lugares impares de N a su alfabeto correspondiente como se muestra a continuación.
- Si ambas condiciones satisfacen la concatenación, se forman las dos strings anteriores.
- Si N no puede satisfacer los tres criterios anteriores, imprima «-1».
A continuación se muestra la lista de caracteres coincidentes:
Ejemplos:
Entrada: N = 61
Salida: 6B
Explicación:
Dado que 61 se puede expresar como la suma de dos números primos: 61 = 2 + 59
Por lo tanto, la string resultante después de cambiar el carácter en el índice par es «6B».
Entrada: N = 1011243
Salida: B0B1C4D
Explicación:
Dado que 1011243 es un número semiprimo: 1011243 = 3 * 337081
Por lo tanto, la string resultante después de cambiar el carácter en el índice par es «B0B1C4D».
Acercarse:
- Verifique si el número N dado es semiprimo o no utilizando el enfoque discutido en este artículo. En caso afirmativo, haga lo siguiente:
- Convierta el número N dado en una string (por ejemplo, str ) usando la función to_string() .
- Recorra la string anterior formada y cambie los caracteres en el índice par como:
str[i] = char((str[i] - '0') + 65)
- Imprime la nueva string formada.
- Verifique si el número N dado se puede expresar como una suma de dos números primos o no usando el enfoque discutido en este artículo. En caso afirmativo, haga lo siguiente:
- Convierta el número N dado en una string (por ejemplo, str ) usando la función to_string() .
- Recorra la string anterior formada y cambie los caracteres en el índice impar como:
str[i] = char((str[i] - '0') + 65)
- Imprime la nueva string formada.
- Si las dos condiciones anteriores no se cumplen, entonces no podemos formar Cypher String. Imprima “-1” .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include "bits/stdc++.h" using namespace std; // Function to check whether a number // is prime or not bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return false; } return true; } // Function to check if a prime number // can be expressed as sum of // two Prime Numbers bool isPossibleSum(int N) { // If the N && (N-2) is Prime if (isPrime(N) && isPrime(N - 2)) { return true; } else { return false; } } // Function to check semiPrime bool checkSemiprime(int num) { int cnt = 0; // Loop from 2 to sqrt(num) for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i, // Increment the count of // prime numbers ++cnt; } } // If num is greater than 1, then // add 1 to it if (num > 1) { ++cnt; } // Return '1' if count is 2 else // return '0' return cnt == 2; } // Function to make the Cypher string void makeCypherString(int N) { // Resultant string string semiPrime = ""; string sumOfPrime = ""; // Make string for the number N string str = to_string(N); // Check for semiPrime if (checkSemiprime(N)) { // Traverse to make Cypher string for (int i = 0; str[i]; i++) { // If index is odd add the // current character if (i & 1) { semiPrime += str[i]; } // Else current character is // changed else { semiPrime += char( str[i] - '0' + 65); } } } // Check for sum of two primes if (isPossibleSum(N)) { // Traverse to make Cypher string for (int i = 0; str[i]; i++) { // If index is odd then // current character is // changed if (i & 1) { sumOfPrime += char( str[i] - '0' + 65); } // Else add the current // character else { sumOfPrime += str[i]; } } } // If the resultant string is "" // then print -1 if (semiPrime + sumOfPrime == "") { cout << "-1"; } // Else print the resultant string else { cout << semiPrime + sumOfPrime; } } // Driver Code int main() { // Given Number int N = 1011243; // Function Call makeCypherString(N); return 0; }
Java
// Java program for // the above approach import java.util.*; class GFG{ // Function to check // whether a number // is prime or not static boolean isPrime(int n) { if (n <= 1) return false; for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) return false; } return true; } // Function to check if a prime number // can be expressed as sum of // two Prime Numbers static boolean isPossibleSum(int N) { // If the N && (N-2) is Prime if (isPrime(N) && isPrime(N - 2)) { return true; } else { return false; } } // Function to check semiPrime static boolean checkSemiprime(int num) { int cnt = 0; // Loop from 2 to Math.sqrt(num) for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i; // Increment the count of // prime numbers ++cnt; } } // If num is greater than 1, then // add 1 to it if (num > 1) { ++cnt; } // Return '1' if count is 2 else // return '0' return cnt == 2; } // Function to make the Cypher String static void makeCypherString(int N) { // Resultant String String semiPrime = ""; String sumOfPrime = ""; // Make String for the number N String str = String.valueOf(N); // Check for semiPrime if (checkSemiprime(N)) { // Traverse to make Cypher String for (int i = 0; i < str.length(); i++) { // If index is odd add the // current character if (i % 2 == 1) { semiPrime += str.charAt(i); } // Else current character is // changed else { semiPrime += (char)(str.charAt(i) - '0' + 65); } } } // Check for sum of two primes if (isPossibleSum(N)) { // Traverse to make Cypher String for (int i = 0; i < str.length(); i++) { // If index is odd then // current character is // changed if (i % 2 == 1) { sumOfPrime += (char)(str.charAt(i) - '0' + 65); } // Else add the current // character else { sumOfPrime += str.charAt(i); } } } // If the resultant String is "" // then print -1 if (semiPrime + sumOfPrime == "") { System.out.print("-1"); } // Else print the resultant String else { System.out.print(semiPrime + sumOfPrime); } } // Driver Code public static void main(String[] args) { // Given Number int N = 1011243; // Function Call makeCypherString(N); } } // This code is contributed by Rajput-Ji
Python3
# Python3 program for the above approach import math # Function to check whether a number # is prime or not def isPrime(n): if (n <= 1): return False sqt = (int)(math.sqrt(n)) for i in range(2, sqt): if (n % i == 0): return False return True # Function to check if a prime number # can be expressed as sum of # two Prime Numbers def isPossibleSum(N): # If the N && (N-2) is Prime if (isPrime(N) and isPrime(N - 2)): return True else: return False # Function to check semiPrime def checkSemiprime(num): cnt = 0 # Loop from 2 to sqrt(num) i = 2 while cnt < 2 and i * i <= num: while (num % i == 0): num //= i # Increment the count of # prime numbers cnt += 1 i += 1 # If num is greater than 1, then # add 1 to it if (num > 1): cnt += 1 # Return '1' if count is 2 else # return '0' return cnt == 2 # Function to make the Cypher string def makeCypherString(N): # Resultant string semiPrime = "" sumOfPrime = "" # Make string for the number N st = str(N) # Check for semiPrime if (checkSemiprime(N)): # Traverse to make Cypher string for i in range(len(st)): # If index is odd add the # current character if (i & 1): semiPrime += st[i] # Else current character is # changed else: semiPrime += chr(ord(st[i]) - ord('0') + 65) # Check for sum of two primes if (isPossibleSum(N)): # Traverse to make Cypher string for i in range(len(st)): # If index is odd then # current character is # changed if (i & 1): sumOfPrime += chr(ord(st[i]) - ord('0') + 65) # Else add the current # character else: sumOfPrime += st[i] # If the resultant string is "" # then print -1 if (semiPrime + sumOfPrime == ""): print("-1") # Else print the resultant string else: print(semiPrime + sumOfPrime) # Driver Code if __name__ == "__main__": # Given number N = 1011243 # Function call makeCypherString(N) # This code is contributed by chitranayal
C#
// C# program for // the above approach using System; class GFG{ // Function to check // whether a number // is prime or not static bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i <= Math.Sqrt(n); i++) { if (n % i == 0) return false; } return true; } // Function to check if a prime number // can be expressed as sum of // two Prime Numbers static bool isPossibleSum(int N) { // If the N && (N-2) is Prime if (isPrime(N) && isPrime(N - 2)) { return true; } else { return false; } } // Function to check semiPrime static bool checkSemiprime(int num) { int cnt = 0; // Loop from 2 to Math.Sqrt(num) for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i; // Increment the count of // prime numbers ++cnt; } } // If num is greater than 1, then // add 1 to it if (num > 1) { ++cnt; } // Return '1' if count is 2 else // return '0' return cnt == 2; } // Function to make the Cypher String static void makeCypherString(int N) { // Resultant String String semiPrime = ""; String sumOfPrime = ""; // Make String for the number N String str = String.Join("", N); // Check for semiPrime if (checkSemiprime(N)) { // Traverse to make Cypher String for (int i = 0; i < str.Length; i++) { // If index is odd add the // current character if (i % 2 == 1) { semiPrime += str[i]; } // Else current character is // changed else { semiPrime += (char)(str[i] - '0' + 65); } } } // Check for sum of two primes if (isPossibleSum(N)) { // Traverse to make Cypher String for (int i = 0; i < str.Length; i++) { // If index is odd then // current character is // changed if (i % 2 == 1) { sumOfPrime += (char)(str[i] - '0' + 65); } // Else add the current // character else { sumOfPrime += str[i]; } } } // If the resultant String is "" // then print -1 if (semiPrime + sumOfPrime == "") { Console.Write("-1"); } // Else print the resultant String else { Console.Write(semiPrime + sumOfPrime); } } // Driver Code public static void Main(String[] args) { // Given Number int N = 1011243; // Function Call makeCypherString(N); } } // This code is contributed by Rajput-Ji
Javascript
<script> // Javascript program for // the above approach // Function to check // whether a number // is prime or not function isPrime(n) { if (n <= 1) return false; for (let i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) return false; } return true; } // Function to check if a prime number // can be expressed as sum of // two Prime Numbers function isPossibleSum(N) { // If the N && (N-2) is Prime if (isPrime(N) && isPrime(N - 2)) { return true; } else { return false; } } // Function to check semiPrime function checkSemiprime(num) { let cnt = 0; // Loop from 2 to Math.sqrt(num) for (let i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num = Math.floor(num/i); // Increment the count of // prime numbers ++cnt; } } // If num is greater than 1, then // add 1 to it if (num > 1) { ++cnt; } // Return '1' if count is 2 else // return '0' return cnt == 2; } // Function to make the Cypher String function makeCypherString(N) { // Resultant String let semiPrime = ""; let sumOfPrime = ""; // Make String for the number N let str = (N).toString(); // Check for semiPrime if (checkSemiprime(N)) { // Traverse to make Cypher String for (let i = 0; i < str.length; i++) { // If index is odd add the // current character if (i % 2 == 1) { semiPrime += str[i]; } // Else current character is // changed else { semiPrime += String.fromCharCode(str[i].charCodeAt(0) - '0'.charCodeAt(0) + 65); } } } // Check for sum of two primes if (isPossibleSum(N)) { // Traverse to make Cypher String for (let i = 0; i < str.length; i++) { // If index is odd then // current character is // changed if (i % 2 == 1) { sumOfPrime += String.fromCharCode(str[i].charCodeAt(0) - '0'.charCodeAt(0) + 65); } // Else add the current // character else { sumOfPrime += str[i]; } } } // If the resultant String is "" // then print -1 if (semiPrime + sumOfPrime == "") { document.write("-1"); } // Else print the resultant String else { document.write(semiPrime + sumOfPrime); } } // Driver Code // Given Number let N = 1011243; // Function Call makeCypherString(N); // This code is contributed by avanitrachhadiya2155 </script>
B0B1C4D
Publicación traducida automáticamente
Artículo escrito por AbhijitTripathy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA