Загрузка данных
package by.student;
import java.util.Scanner;
public class Number {
// Выводит чётные и нечётные числа
public void Sort(Scanner input) {
int[] numbers = readNumbers(input);
System.out.print("Чётные числа: ");
boolean foundEven = false;
for (int number : numbers) {
if (number % 2 == 0) {
System.out.print(number + " ");
foundEven = true;
}
}
if (!foundEven) System.out.print("нет");
System.out.print("\nНечётные числа: ");
boolean foundOdd = false;
for (int number : numbers) {
if (number % 2 != 0) {
System.out.print(number + " ");
foundOdd = true;
}
}
if (!foundOdd) System.out.print("нет");
System.out.println();
}
// mode 1 — делятся на 3 или 9
// mode 2 — делятся на 5 или 10
// mode 3 — найти НОД и НОК
public void Calculator(Scanner input, int mode) {
int[] numbers = readNumbers(input);
if (mode == 1) {
System.out.print("Числа, которые делятся на 3 или 9: ");
printDivisible(numbers, 3);
} else if (mode == 2) {
System.out.print("Числа, которые делятся на 5 или 10: ");
printDivisible(numbers, 5);
} else if (mode == 3) {
printGcdAndLcm(numbers);
} else {
System.out.println("Неизвестный режим.");
}
}
// Выводит простые числа
public void SortPrimes(Scanner input) {
int[] numbers = readNumbers(input);
System.out.print("Простые числа: ");
boolean found = false;
for (int number : numbers) {
if (isPrime(number)) {
System.out.print(number + " ");
found = true;
}
}
if (!found) System.out.print("нет");
System.out.println();
}
private int[] readNumbers(Scanner input) {
int n;
while (true) {
System.out.print("Введите количество чисел N: ");
while (!input.hasNextInt()) {
System.out.print("Введите целое число: ");
input.nextLine();
}
n = input.nextInt();
if (n > 0) {
break;
}
System.out.println("N должно быть больше нуля.");
}
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
System.out.print("Число " + (i + 1) + ": ");
while (!input.hasNextInt()) {
System.out.print("Введите целое число: ");
input.next();
}
numbers[i] = input.nextInt();
}
return numbers;
}
private void printDivisible(int[] numbers, int divisor) {
boolean found = false;
for (int number : numbers) {
if (number % divisor == 0) {
System.out.print(number + " ");
found = true;
}
}
if (!found) System.out.print("нет");
System.out.println();
}
private void printGcdAndLcm(int[] numbers) {
long gcd = Math.abs((long) numbers[0]);
long lcm = gcd;
for (int i = 1; i < numbers.length; i++) {
long value = Math.abs((long) numbers[i]);
gcd = findGcd(gcd, value);
if (lcm == 0 || value == 0) {
lcm = 0;
} else {
lcm = Math.abs((lcm / findGcd(lcm, value)) * value);
}
}
System.out.println("НОД: " + gcd);
System.out.println("НОК: " + lcm);
}
private long findGcd(long a, long b) {
while (b != 0) {
long remainder = a % b;
a = b;
b = remainder;
}
return a;
}
private boolean isPrime(int number) {
if (number < 2) return false;
for (int i = 2; i <= number / i; i++) {
if (number % i == 0) return false;
}
return true;
}
}