Просто некоторые общие советы:
Во-первых: как вы проверяете кастрированный баран число является простым или не может быть упрощена; вам нужно только проверить элементы до целое число, которое вы проверяете.
Второе: после того, как вы знаете, что число неправо, почему вы продолжаете проверять? Разбейте цикл for
, как только вы узнаете, что число не является простым.
В-третьих: Чтобы выводить результаты на консоль, вы не можете просто распечатать объект (массив является объектом, поэтому все, что напечатано на распечатке, может выглядеть довольно странным). В вашей процедуре main
сохраните результат в переменной и распечатайте каждую запись с помощью цикла for
.
Как указано в комментариях, вы должны использовать соглашения об именах Java. Код ниже - это переписывание исходного кода с использованием этих соглашений и применение предложений, которые я вам дал выше.
public static boolean[] checkForPrimes(int[] numbers) {
/*
The name for the function should be a verbe, and start
with a lower case letter.
The input parameter for the function is an object, and
must also start with a lower case letter.
*/
boolean[] veredict = new boolean[numbers.length];
for(i = 0; i < numbers.length; i++) {
veredict[i] = true;
// You only need to check up to half each number
for(j = 2; j <= numbers[i]/2; j++) {
if(numbers[i] % j == 0) {
veredict[i] = false;
break; // once you know the number is non-prime
// exit the loop
}
}
}
return veredict;
}
public static void printResult(int[] numbers) {
boolean[] veredict = checkForPrimes(numbers);
// You must traverse the arrays to print them out:
for(i = 0; i < numbers.length; i++) {
System.out.println(numbers[i] + " " + veredict[i]);
}
}
какой язык является то, что? – njzk2
Если вам не побеспокоено объяснить ** КАК ** этот код не работает, мы не можем беспокоиться о том, чтобы попытаться и угадать, в чем проблема. –
Скорее всего, C# –