1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3.  
  4. class TestClass {
  5. public static void main(String args[]) throws Exception {
  6.  
  7. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  8. int T = Integer.parseInt(br.readLine());
  9. int N = 0;
  10. String string = null, result = null;
  11. for (int i = 1; i <= T; i++) {
  12. N = Integer.parseInt(br.readLine());
  13. string = br.readLine();
  14. result = getResultantString(string, N);
  15. System.out.println(result);
  16. }
  17.  
  18. }
  19.  
  20. private static String getResultantString(String string, int n) {
  21.  
  22. int temp = 0, next = 0, prev = 0;
  23. StringBuilder sb = new StringBuilder();
  24. for (int i = 0; i < n; i++) {
  25.  
  26. if (Character.isDigit(string.charAt(i))) {
  27.  
  28. sb.append("C");
  29. } else {
  30. temp = string.codePointAt(i);
  31. next = temp;
  32. prev = temp;
  33. if (next >= 122) {
  34. next = 113;
  35. }
  36. if (prev <=65) {
  37. prev = 67;
  38. }
  39. while (!isPrime(next) && !isPrime(prev)) {
  40. next = next + 1;
  41. prev = prev - 1;
  42. if (next >= 122) {
  43. next = 113;
  44. }
  45. if (prev <=65) {
  46. prev = 67;
  47. }
  48. }
  49.  
  50. if (isPrime(next) && isPrime(prev)) {
  51. sb.append((char) prev);
  52. } else if (isPrime(next)) {
  53. sb.append((char) next);
  54. } else if (isPrime(prev)) {
  55. sb.append((char) prev);
  56. }
  57. }
  58.  
  59. }
  60. return sb.toString();
  61. }
  62.  
  63. private static boolean isPrime(int num) {
  64.  
  65. int flag = 0;
  66. int sqrt = (int) Math.sqrt(num);
  67. for (int i = 2; i <= sqrt; i++) {
  68. if (num % i == 0) {
  69. flag = 1;
  70. break;
  71. }
  72. }
  73. if (flag == 0)
  74. return true;
  75. else
  76. return false;
  77. }
  78. }
Language: Java 8