fork download
  1. class Main{
  2. public static void main(String[] a) throws Exception{
  3. java.util.Scanner s = new java.util.Scanner(System.in);
  4. int T = s.nextInt();
  5.  
  6. int len;
  7. byte lowerPrime, greaterPrime, temp;
  8. String word;
  9. byte[] b;
  10. for (int i = 0; i < T; i++) {
  11. len = s.nextInt();
  12. s.nextLine();
  13. word = s.nextLine();
  14.  
  15. b = word.getBytes(java.nio.charset.StandardCharsets.US_ASCII);
  16. System.out.println("Input array: "+java.util.Arrays.toString(b));
  17.  
  18. for (int k = 0; k < b.length; k++) {
  19. temp = b[k];
  20. if (!checkPrime(temp)) {
  21. lowerPrime = findPrimeSmaller(temp);
  22. greaterPrime = findPrimeGreater(temp);
  23. System.out.println("char="+temp+": lower="+lowerPrime+" & greater="+greaterPrime);
  24.  
  25. if ((temp - lowerPrime) <= (greaterPrime - temp)) {
  26. b[k] = lowerPrime;
  27. } else if ((temp - lowerPrime) > (greaterPrime - temp)) {
  28. b[k] = greaterPrime;
  29. }
  30. }
  31. }
  32. System.out.println("Resulting array: "+java.util.Arrays.toString(b));
  33.  
  34. System.out.println(new String(b, "UTF-8"));
  35.  
  36. }
  37.  
  38. }
  39.  
  40. private static boolean checkPrime(byte n) {
  41.  
  42. if (n == 1) {
  43. return false;
  44. }
  45.  
  46. byte i = 2;
  47.  
  48. while (i < (n / 2)) {
  49. if (n % i == 0) {
  50. return false;
  51. }
  52. i++;
  53. }
  54. return true;
  55. }
  56.  
  57. private static byte findPrimeGreater(byte n) {
  58. while (!checkPrime(n)) {
  59. n++;
  60. }
  61. return n;
  62. }
  63.  
  64. private static byte findPrimeSmaller(byte n) {
  65. while (!checkPrime(n)) {
  66. n--;
  67. }
  68. return n;
  69. }
  70. }
Success #stdin #stdout 0.16s 38704KB
stdin
1
5
testy
stdout
Input array: [116, 101, 115, 116, 121]
char=116: lower=113 & greater=127
char=115: lower=113 & greater=127
char=116: lower=113 & greater=127
char=121: lower=113 & greater=127
Resulting array: [113, 101, 113, 113, 127]
qeqq