Ошибка возникает из-за совпадения% с параметром.
int p = 0;
String nl = "\r\n";
for (int i = 2; i <= n; i++) {
if (prime[i]) {
++p;
System.out.printf("%-15d ", i);
if (p % 10 == 0) {
System.out.println();
}
//System.out.printf("%-15d%s", i, (p % 10 == 0 ? nl : " "));
}
}
Теперь %n
действительно приведет к переводу строки ("\r\n"
в Windows, "\n"
в Linux) со сбросомлиния.Однако вы должны поместить его в строку формата:
В моем альтернативе, не имеющем комментариев, пропускается немедленная очистка консоли.