class Main{
java.
util.
Scanner s
= new java.
util.
Scanner(System.
in); int T = s.nextInt();
int len;
byte lowerPrime, greaterPrime, temp;
byte[] b;
for (int i = 0; i < T; i++) {
len = s.nextInt();
s.nextLine();
word = s.nextLine();
b = word.getBytes(java.nio.charset.StandardCharsets.US_ASCII);
System.
out.
println("Input array: "+java.
util.
Arrays.
toString(b
));
for (int k = 0; k < b.length; k++) {
temp = b[k];
if (!checkPrime(temp)) {
lowerPrime = findPrimeSmaller(temp);
greaterPrime = findPrimeGreater(temp);
System.
out.
println("char="+temp
+": lower="+lowerPrime
+" & greater="+greaterPrime
);
if ((temp - lowerPrime) <= (greaterPrime - temp)) {
b[k] = lowerPrime;
} else if ((temp - lowerPrime) > (greaterPrime - temp)) {
b[k] = greaterPrime;
}
}
}
System.
out.
println("Resulting array: "+java.
util.
Arrays.
toString(b
));
}
}
private static boolean checkPrime(byte n) {
if (n == 1) {
return false;
}
byte i = 2;
while (i < (n / 2)) {
if (n % i == 0) {
return false;
}
i++;
}
return true;
}
private static byte findPrimeGreater(byte n) {
while (!checkPrime(n)) {
n++;
}
return n;
}
private static byte findPrimeSmaller(byte n) {
while (!checkPrime(n)) {
n--;
}
return n;
}
}
Y2xhc3MgTWFpbnsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhKSB0aHJvd3MgRXhjZXB0aW9uewogICAgamF2YS51dGlsLlNjYW5uZXIgcyA9IG5ldyBqYXZhLnV0aWwuU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgaW50IFQgPSBzLm5leHRJbnQoKTsKCiAgICBpbnQgbGVuOwogICAgYnl0ZSBsb3dlclByaW1lLCBncmVhdGVyUHJpbWUsIHRlbXA7CiAgICBTdHJpbmcgd29yZDsKICAgIGJ5dGVbXSBiOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBUOyBpKyspIHsKICAgICAgICBsZW4gPSBzLm5leHRJbnQoKTsKICAgICAgICBzLm5leHRMaW5lKCk7CiAgICAgICAgd29yZCA9IHMubmV4dExpbmUoKTsKCiAgICAgICAgYiA9IHdvcmQuZ2V0Qnl0ZXMoamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzLlVTX0FTQ0lJKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIklucHV0IGFycmF5OiAiK2phdmEudXRpbC5BcnJheXMudG9TdHJpbmcoYikpOwoKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGIubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgdGVtcCA9IGJba107CiAgICAgICAgICAgIGlmICghY2hlY2tQcmltZSh0ZW1wKSkgewogICAgICAgICAgICAgICAgbG93ZXJQcmltZSA9IGZpbmRQcmltZVNtYWxsZXIodGVtcCk7CiAgICAgICAgICAgICAgICBncmVhdGVyUHJpbWUgPSBmaW5kUHJpbWVHcmVhdGVyKHRlbXApOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjaGFyPSIrdGVtcCsiOiBsb3dlcj0iK2xvd2VyUHJpbWUrIiAmIGdyZWF0ZXI9IitncmVhdGVyUHJpbWUpOwoKICAgICAgICAgICAgICAgIGlmICgodGVtcCAtIGxvd2VyUHJpbWUpIDw9IChncmVhdGVyUHJpbWUgLSB0ZW1wKSkgewogICAgICAgICAgICAgICAgICAgIGJba10gPSBsb3dlclByaW1lOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGVtcCAtIGxvd2VyUHJpbWUpID4gKGdyZWF0ZXJQcmltZSAtIHRlbXApKSB7CiAgICAgICAgICAgICAgICAgICAgYltrXSA9IGdyZWF0ZXJQcmltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJlc3VsdGluZyBhcnJheTogIitqYXZhLnV0aWwuQXJyYXlzLnRvU3RyaW5nKGIpKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBTdHJpbmcoYiwgIlVURi04IikpOwoKICAgIH0KCn0KCnByaXZhdGUgc3RhdGljIGJvb2xlYW4gY2hlY2tQcmltZShieXRlIG4pIHsKCiAgICBpZiAobiA9PSAxKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJ5dGUgaSA9IDI7CgogICAgd2hpbGUgKGkgPCAobiAvIDIpKSB7CiAgICAgICAgaWYgKG4gJSBpID09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpKys7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKcHJpdmF0ZSBzdGF0aWMgYnl0ZSBmaW5kUHJpbWVHcmVhdGVyKGJ5dGUgbikgewogICAgd2hpbGUgKCFjaGVja1ByaW1lKG4pKSB7CiAgICAgICAgbisrOwogICAgfQogICAgcmV0dXJuIG47Cn0KCnByaXZhdGUgc3RhdGljIGJ5dGUgZmluZFByaW1lU21hbGxlcihieXRlIG4pIHsKICAgIHdoaWxlICghY2hlY2tQcmltZShuKSkgewogICAgICAgIG4tLTsKICAgIH0KICAgIHJldHVybiBuOwp9Cn0=
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