diff --git a/java/Main.java b/java/Main.java index 8fe0cd2..0ec5b3f 100644 --- a/java/Main.java +++ b/java/Main.java @@ -1,10 +1,212 @@ +import java.lang.reflect.Array; +import java.math.BigInteger; +import java.util.Arrays; + public class Main { public static void main(String[] args) { - task14(); + task24(args); } - static void task14() { + static void task24(String[] args) { + /* + Вампирами называются числа, состоящие из четного количества цифр и полученные перемножением пары чисел, каждое из которых содержит половину цифр результата. Цифры берутся из исходного числа в произвольном порядке, завершающие нули недопустимы. Примеры: + 1) 1260 = 21 * 60; + 2) 1827 = 21 * 87; + 3) 2187 = 27 * 81. + Напишите программу, которая находит всех «вампиров», состоящих из 4 цифр. (Задача предложена Дэном Форханом.) + */ + for (int x = 10; x < 100; x++) { + for (int y = 10; y < 100; y++) { + if (Integer.toString(x * y).length() == 4) { + char[] claws_array = (Integer.toString(x) + Integer.toString(y)).toCharArray(); + Arrays.sort(claws); + String + + char[] vampire_array = Integer.toString(x * y).toCharArray(); + Arrays.sort(claws); + + if (claws.equals(vampire)) { + System.out.println(x + " * " + y + " = " + x * y); + } + } + } + } + } + + static void task23(String[] args) { + /* + (4) Числами Фибоначчи называется числовая последовательность 1, 1, 2, 3, 5, 8, 13, 21, 34 и т. д., в которой каждое число, начиная с третьего, является суммой двух предыдущих. Напишите метод, который получает целочисленный аргумент и выводит указанное количество чисел Фибоначчи. Например, при запуске командой java Fibonacci 5 (где Fibonacci — имя класса) должна выводиться последовательность 1, 1, 2, 3, 5. + */ + + int n = Integer.parseInt(args[0]); + // System.out.println(n); + + BigInteger A = BigInteger.valueOf(1), B = BigInteger.valueOf(1), C; + + if (n == 0) { + System.out.println(""); + } else if (n == 1) { + System.out.println("1"); + } else if (n == 2) { + System.out.println("1 1"); + } else { + System.out.print("1 1 "); + for (int i = 0; i < n - 2; i++) { + C = A.add(B); + A = B; + B = C; + System.out.print(B.toString() + " "); + } + } + + } + + static void task22() { + /* + Создайте команду switch, которая выводит сообщение в каждой секции case. Разместите ее в цикле for, проверяющем все допустимые значения case. Каждая секция case должна завершаться командой break. Затем удалите команды break и посмотрите, что произойдет. + */ + + for (int i = 1; i <= 5; i++) { + switch (i) { + case 1: + case 2: + + System.out.println("<3"); + break; + + case 4: + case 5: + + System.out.println("no love :("); + break; + + default: + System.out.println(i); + break; + } + } + } + + static int test(int testval, int begin, int end) { + /* + 1 - testval принадлежит [begin, end] + 0 - иначе + */ + if (begin <= testval && testval <= end) { + return 1; + } + + return 0; + } + + static void task20() { + /* + Измените метод test() так, чтобы он получал два дополнительных аргумента begin и end, а значение testval проверялось на принадлежность к диапазону [begin, end] (с включением границ). + */ + + System.out.println( + test(2, 1, 5) // 2 in [1, 5] (1) + ); + + System.out.println( + test(1, 1, 5) // 1 in [1, 5] (1) + ); + + System.out.println( + test(-1, 1, 5) // -1 not in [1, 5] (0) + ); + + } + + static void task18() { + /* + Напишите программу, использующую два вложенных цикла for и оператор остатка (%) для поиска и вывода простых чисел (то есть целых чисел, не делящихся нацело ни на какое другое число, кроме себя и 1). + */ + + + for (int i = 2; i < 100000; i++) { + boolean prime = true; + for (int j = 2; j < i; j++) { + if (i % j == 0) { + // System.out.println("число " + i + " не простое"); + prime = false; + break; + } + } + + if (prime) { + System.out.println("число " + i + " простое"); + } + } + + } + + static void task17() { + /* + Измените упражнение 2 так, чтобы код выполнялся в «бесконечном» цикле while. Программа должна работать до тех пор, пока ее выполнение не будет прервано с клавиатуры (как правило, нажатием клавиш Ctrl+C). + */ + + while (true) { + task16(); + } + } + + static void task16() { + /* + Напишите программу, которая генерирует 25 случайных значений типа int. Для каждого значения команда if - e ls e сообщает, в каком отношении оно находится с другим случайно сгенерированным числом (больше, меньше, равно). + */ + for (int i = 0; i < 25; i++) { + int num1 = (int)(Math.random() * 100); + int num2 = (int)(Math.random() * 100); + + // System.out.println("num1: " + num1); + // System.out.println("num2: " + num2); + + if (num1 > num2) { + System.out.println(num1 + " > " + num2); + } else if (num1 < num2) { + System.out.println(num1 + " < " + num2); + } else { + System.out.println(num1 + " = " + num2); + } + + + } + } + + static void task15() { + /* + Напишите программу, которая выводит числа от 1 до 100. + */ + for (int i = 1; i <= 100; i++) { + System.out.println(i); + } + } + + static void allStringOps(String s1, String s2) { + System.out.println("s1 < s2: " + (s1.compareTo(s2) < 0)); + System.out.println("s1 > s2: " + (s1.compareTo(s2) > 0)); + System.out.println("s1 <= s2: " + (s1.compareTo(s2) <= 0)); + System.out.println("s1 >= s2: " + (s1.compareTo(s2) >= 0)); + + System.out.println("s1 == s2: " + (s1 == s2)); + System.out.println("s1 != s2: " + (s1 != s2)); + + System.out.println("s1.equals(s2): " + s1.equals(s2)); + System.out.println("s2.equals(s1): " + s2.equals(s1)); + System.out.println(); + } + + + static void task14() { + /* + Напишите метод, который получает два аргумента String, выполняет с ними все операции логических сравнений и выводит результаты. Для операций == и != также выполните проверку equals(). Вызовите свой метод из main() для нескольких разных объектов String. + */ + + allStringOps("hello", "world"); + allStringOps("hello", "hello"); + allStringOps(new String("hello"), new String("hello")); } static void charToBin(char ch) {