НОД

  • 8
  • Недоступна
Продолжаем наши попытки войти в космическое пространство планеты Линейный Хаос. И вот ещё одно задание с приграничного собеседования для юных поступающих: найти наибольший общий делитель (или НОД) двух целых положительных чисел.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (122)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Alexandr Pozdeev15 уровень, Москва
вчера, 14:59
В случае если введенные строки невозможно преобразовать в положительные целые числа, должно возникать исключение.
Может кому поможет. Сам напоролся. Если ввести "Миру мир", то данную строку тоже нельзя преобразовать в положительное целое число, но здесь ожидается что мы честные люди и честно вводим целые числа, не заставляя Integer.parseInt() выбрасывать исключения, далее мы сами должны выкинуть исключение на основе введенных чисел.
Sergey Fokin16 уровень
позавчера, 09:12
Алгоритм поиска НОД очень прост, кстати. int max=Math.max(num1,num2); int NOD=1; for (int i = 1; i <max; i++) { if(num1%i==0&&num2%i==0) NOD=i; }
Shamil15 уровень
вчера, 00:07
То что выше это не просто, вот просто))))))
public static int nod(int a, int b){
    if (b == 0) return a;
    return nod(b, a%b);
}
Не зря 5 лет протарабанил на Физ мате))))
Andrii15 уровень
пятница, 01:18
Задача понравилась, хоть и решил ее через огромное количество кода.
S3R3N1TY15 уровень, Санкт-Петербург
14 января, 21:12
Блин, написал даже свой класс Експешена и реализовал все, но валидатор ругался, ниже в комментах смотрите способ чтобы принял.
arteemmius15 уровень, Москва
11 января, 10:52
спасибо авторам задачи за раскрытие смысла второго требования к задаче, более расплывчато сформулировать было нельзя...
Леонид17 уровень, Москва
4 января, 12:17
Да почему с try catch не пропускало по второму пункту. Кроме проверки на отрицательность чисел добавлял на NumberFormatException. Может там буквы ввели. Не проходило ничего, пока не стер все и не оставил только проверку на положительность
Алексей17 уровень
3 января, 19:17
Ну с пунктом 2 конечно жесть. Имхо лучше уж явно определить - если введенные числа меньше или равно нолю, то бросьте эксепшн.
Voyager16 уровень
11 января, 16:49
Спасибо, добавил кроме меньше 0 еще и равно 0 при бросании исключения и прошло.
lesaoni17 уровень, Москва
27 декабря 2018, 14:37
Первый раз решил просто дебажить валидатором, не вникая в логику и не запуская программу перед сдачей - не проходит значит не так) 8 попыток, слава богу прочёл комментарий что отлавливать исключение не нужно(опять же потому что плохо прочитал условие) )
Игорь22 уровень, Нижний Новгород
21 декабря 2018, 20:21
Почему-то валидатор не принимал решение с помощью
Integer.parseUnsignedInt(scanner.nextLine());
пришлось сначала ловить исключения при
num1 = Integer.parseInt(scanner.nextLine());
, а потом еще полученные числа проверять на >=0. Ужас! Хорошо, что хоть поиск НОД через
BigInteger nod = b1.gcd(b2);
валидатор принял...
Rif16 уровень
29 декабря 2018, 00:12
А почему ты не использовал сразу NextInt() ? Это не покалеченный bufferreader, scanner может сразу целое число получить.
Scanner in = new Scanner(System.in);
 int a = in.nextInt();
10 декабря 2018, 20:12
Самый главный совет - не нужно отлавливать исключение ))