НОД

  • 16
  • Недоступна
Продолжаем наши попытки войти в космическое пространство планеты Линейный Хаос. И вот ещё одно задание с приграничного собеседования для юных поступающих: найти наибольший общий делитель (или НОД) двух целых положительных чисел.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (351)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Максим16 уровень, Москва
28 июня, 13:58
Как найти НОД, есть статья по алгоритму Евклида: https://habr.com/ru/sandbox/60131/ По пунку второму, смотрите помощь тут в комментариях
Мгер16 уровень, Санкт-Петербург
28 июня, 11:33
"В случае если введенные строки невозможно преобразовать в положительные целые числа, должно возникать исключение." - Сказанное воспринял сдуру как команду к действиям, и сразу в try преобразовывал в положительное число
try {
             a = Math.abs(Integer.parseInt(reader.readLine()));
             b = Math.abs(Integer.parseInt(reader.readLine()));
        }
с последующей проверкой if <= 0) throw new Exception()
и из за этого много потраченного времени и попыток. Не повторяйте этого. Преобразовывать Math.Abs… - не нужно
Миша16 уровень, Сранопипирск
23 июня, 07:46
Делал через try-catch все ок. А в чем была проблема, расскажите?
Andrew Grini (AG)15 уровень, Кишинев
23 июня, 20:38
проблемы нет кроме той, что у меня, к примеру с try catch валидатор не пропускает по данному пункту: В случае если введенные строки невозможно преобразовать в положительные целые числа, должно возникать исключение.
Миша16 уровень, Сранопипирск
24 июня, 06:23
Оч странно
Николай Павленко22 уровень, Запорожье
21 июня, 11:02
Так как в школе я был круглым дв****ом)) Я решил не заморачиваться Scaner читает две строки и дальше всё считает класс BigInteger gcd() в него должны попадать именно строки. Для второго пункта я запарсил строки в инты и проверил x,y на if (x <= 0) throw new Exception();
Денис17 уровень
22 июня, 19:08
Красавчик, если работает и не имеет побчек ))
Сергей16 уровень, Тюмень
21 июня, 07:14
6 попыток из-за того что использовал try\catch☹️ Не ловите ошибки, дайте им сломать вашу программу!
Михаил15 уровень, Санкт-Петербург
21 июня, 17:47
Да, try/catch не нужен. И зачем только городил кружева...
Андрей15 уровень, Москва
17 июня, 15:58
" В случае если введенные строки невозможно преобразовать в положительные целые числа, должно возникать исключение." Отрицательное число легко преобразуется в положительное и вообще абракадабра с цифрой преобразуется в положительное.
Ivan Matveenko22 уровень, Омск
17 июня, 07:52
if(a <= 0 || b <= 0) throw new Exception(); + https://www.youtube.com/watch?v=yrOKPlg1TXg&t
Anuar15 уровень
17 июня, 04:32
Добрый день! Подскажите почему выдает "Программа работа слишком долго", хотя в бесконечный цикл не заходит (по крайней мере я не нашел таких граничных условий)
Ivan Matveenko22 уровень, Омск
17 июня, 07:53
потому что надо решить алгоритмом Евклида, а не перебором делителей
Ivan18 уровень, Череповец
17 июня, 14:05
Совсем не обязательно Евклидом, способов достаточно, условие ничем не ограничивает.
Ivan Matveenko22 уровень, Омск
17 июня, 14:08
ну попробуй решить простым перебором, у меня не приняло...
Ivan18 уровень, Череповец
17 июня, 14:23
Так перебором и решил. Тут дело в другом, нужно чтобы два исключения могли "выскочить": одно - строка в число, а второе - чтобы в цикле в инициализацию счетчика могло отрицательное число попасть, или можно схитрить, используя new Exception.
Ivan18 уровень, Череповец
16 июня, 16:46
Условие сразу показалось подозрительным, но я не делаю исключений для исключений :)
Bogdan16 уровень
13 июня, 16:33
Описание условий задачи требует правки.