Обсуждение решений и реализаций на разных языках, сравнение, нахождение лучшего.
Сообщение отредактировал asr: 22.08.2012, 12:32:47
Поскольку Натальюшка назвала меня ненастоящим программистом.... )Проверьте, как работает ваша функция на разных парах чисел. Например, чему равен НОД (1071, 462)?
*Программисты, не подсказывать! Задача предлагается только для Натальюшки (точнее говоря, для ее сына, который хочет стать программистом).
Сообщение отредактировал asr: 21.08.2012, 10:06:27
Если нужно сделать кучу быстрых операций.Поскольку Натальюшка назвала меня ненастоящим программистом.... )
Проверьте, как работает ваша функция на разных парах чисел. Например, чему равен НОД (1071, 462)?
*Программисты, не подсказывать! Задача предлагается только для Натальюшки (точнее говоря, для ее сына, который хочет стать программистом).
Результат равен 21 ))
Простым перебором (Oracle):
зы. Можно было сделать от большего к меньшему. Но большой выгоды не получится, поскольку в первом случае перебирается весь набор, во втором почти весь.
Можно усложнить, проверить деление на 2 и на 3 если делится то шаг увеличить до 2 3 или 6. Можно поиграть целыми числами для поиска максимально целого делителя в пределах десятка
зы2. Чувствую что математикой можно решить не перебирая, но что-то ковырять неохота.
Сообщение отредактировал asr: 21.08.2012, 14:50:33
Для решения задачи нахождения НОД можно не знать вообще никаких программ. Как правильно выше заметил Квазимодо, для решения данной задачи даже не обязательно знать ЯП (языки программирования). Ведь решение надо начинать не с команд и инструкций ЯП, а с продумывания пошаговых действий. Что будем делать на первом шаге, какой получим результат, что будем с ним делать? Какая будет дальнейшая последовательность действий? Иначе говоря, сначала нужен алгоритм решения. Нашли алгоритм, который работает без ошибок? Поздравляю, это уже хоть какое-то - возможно, неэффективное - но все же, решение задачи. Реализация алгоритма на одном из ЯП нужна только в случае, если нужна программа, работающая на реальном устройстве.Так напишите просто, пожалуйста, список тех программ которые нужно знать.
Сообщение отредактировал Visual1: 21.08.2012, 19:20:18
Сколько перебрал? 462!Вот asr предложил (и реализовал в среде Oracle) алгоритм, в котором все действия состоят в простом последовательном переборе чисел. Он даже получил правильный результат, НОД(1071, 462) = 21. Но какой ценой получен этот результат? Сколько сотен чисел "тупо в лоб" пришлось для этого перебрать? А если исходные числа будут не 1071 и 462, а миллионы? Миллиарды? Как поведет себя такой алгоритм на устройстве с малым объемом памяти и маломощным процессором (например, недорогой сотовый телефон)?
Сообщение отредактировал asr: 21.08.2012, 21:21:28
Многовато что-то. Хотя вы же сами отнесли себя к не программистам, в таком случае для вас это нормально.Сколько перебрал? 462!
Не было и привязки к устройству с большим объемом памяти. Не было привязки вообще ни к какому устройству (настольный компьютер РС или Мас, сотовый телефон и т.д.). Ну и что, это значит, уже нельзя обсуждать границы применимости предложенного Вами алгоритма?Очень интересны доп.постановки после основной.
Привязки к устройству с малым обьемом памяти не было.
Так ведь у меня и нет претензий к вашему выбору.Постановка изначально стояла "возмите любой язык"
Напрасно так болезненно реагируете. Я не хотел Вас обидеть. Напротив, я рад видеть Ваш интерес к предложенной задаче. Вы пока единственный человек, кто дал правильное (хотя и крайне неэффективное) решение. Но согласитесь, для профессионального программиста такое решение - просто позор. (Напоминаю еще раз, я просил программистов не отвечать. Эта задачка предлагалась для школьников старших классов, желающих стать программистами.)Готов выслушать АРГУМЕНТИРОВАНЫЕ замечания.
А не бла-бла-бла.... если бы да ка бы... а если бы у бабушки был....
уже нельзя обсуждать границы применимости предложенного Вами алгоритма?
Почему? Если мне разово надо сосчитать, я применю неэффективный, но быстронаписанный алгоритм.для профессионального программиста такое решение - просто позор
"Разово сосчитать"? Напоминаю, по условию было - написать функцию. Известно ли Вам, для чего в программах нужны функции?Почему? Если мне разово надо сосчитать, я применю неэффективный, но быстронаписанный алгоритм.
для профессионального программиста такое решение - просто позор
И?? Почему нельзя разово сосчитать функцией? Можно разово сосчитать и процедурой. А можно вообще обойтись скриптом."Разово сосчитать"? Напоминаю, по условию было - написать функцию. Известно ли Вам, для чего в программах нужны функции?
Почему? Если мне разово надо сосчитать, я применю неэффективный, но быстронаписанный алгоритм.
для профессионального программиста такое решение - просто позор
Сообщение отредактировал asr: 22.08.2012, 09:23:51
Давайте свой в "3 (три!) итерации
Сообщение отредактировал topcraze: 22.08.2012, 09:44:06
Давайте свой в "3 (три!) итерации
Дано а, b, a>b
Нужно - НОД
1) x = а-b
2) if (x ==0) end; else a=x, goto 1
поправьте, если что не так, последний раз Евклида реализовывала лет 7 назад
Сообщение отредактировал asr: 22.08.2012, 10:01:29
Алгоритм не мой, я воспользовался готовым. Незачем изобретать велосипед.Хотелось бы увидеть ваш алгоритм.
Вас в гугле забанили? Потрудитесь сами хоть немного.vladimir55 скинул мне алгоритм в 12 операций для чисел 1071, 462. Давайте свой в "3 (три!) итерации".
Сообщение отредактировал topcraze: 22.08.2012, 10:19:34
Да нет, не забанили, я даже увидел что вы не смогли свои примеры нарисовать. Фантазии видимо не хватило.Алгоритм не мой, я воспользовался готовым. Незачем изобретать велосипед.
Хотелось бы увидеть ваш алгоритм.Вас в гугле забанили? Потрудитесь сами хоть немного.vladimir55 скинул мне алгоритм в 12 операций для чисел 1071, 462. Давайте свой в "3 (три!) итерации".
А без гугла слабо?погуглила, выяснила, что понятие НОД таки может распространяться и на дроби
в таком случае могу предположить(ибо времени нет проверять), что НОДом для двух дробей будет максимально сокращенная дробь, в которой числитель и знаменатель будут являться простыми по отношению к первоначальным числам..
Сообщение отредактировал asr: 22.08.2012, 10:49:38
Какие я вам должен примеры "нарисовать"? Я дал задачу из школьного курса, чтобы пользователь Натальюшка могла проверить способности к программированию своего сыночка. Я просил программистов не подсказывать. Однако вы решили дать ваше решение. Что ж, если вы не программист, то вы с задачей справились удовлетворительно, как я уже говорил. А если вы программист, то вы с предложенной задачей не справились.Да нет, не забанили, я даже увидел что вы не смогли свои примеры нарисовать. Фантазии видимо не хватило.
Опять бла-бла-бла.....
Конечно не тратьте свое бла-бла-бла... на сотрясание воздуха...Какие я вам должен примеры "нарисовать"? Я дал задачу из школьного курса, чтобы пользователь Натальюшка могла проверить способности к программированию своего сыночка. Я просил программистов не подсказывать. Однако вы решили дать ваше решение. Что ж, если вы не программист, то вы с задачей справились удовлетворительно, как я уже говорил. А если вы программист, то вы с предложенной задачей не справились.
Да нет, не забанили, я даже увидел что вы не смогли свои примеры нарисовать. Фантазии видимо не хватило.
Опять бла-бла-бла.....
Дальнейшие попытки решения вы прекратили. Вместо этого от вас только ненужные бла-бла-бла.
В таком случае, я не вижу смысла дальше тратить на вас свое время.
До свидания.
вот именно этот момент - распространяется ли понятие НОД на дробные числа - да вспомнить слабо, потому как это информация для меня ценности в текущий момент времени не представляетА без гугла слабо?
погуглила, выяснила, что понятие НОД таки может распространяться и на дроби
в таком случае могу предположить(ибо времени нет проверять), что НОДом для двух дробей будет максимально сокращенная дробь, в которой числитель и знаменатель будут являться простыми по отношению к первоначальным числам..
А если решения нет в гугле у вас это будет нерешаемая проблема?
На решение вышепоставленной задачи методом "тупого" перебора у меня ушло 2 мин без использования гугл. Запрос отработал 0,00 сек более точно оракл не показал.вот именно этот момент - распространяется ли понятие НОД на дробные числа - да вспомнить слабо, потому как это информация для меня ценности в текущий момент времени не представляет
А без гугла слабо?
погуглила, выяснила, что понятие НОД таки может распространяться и на дроби
в таком случае могу предположить(ибо времени нет проверять), что НОДом для двух дробей будет максимально сокращенная дробь, в которой числитель и знаменатель будут являться простыми по отношению к первоначальным числам..
А если решения нет в гугле у вас это будет нерешаемая проблема?
нет решения в гугле - это моя обычная рабочая ситуация вот именно сейчас есть задача, решения который в гугле нет, она для меня значительно более приоритетная, чем представленная тут, так что...
но вы можете тоже списать на "слабо", мне не жалко
по сабжу - обучиться программированию можно дома, можно в универе, можно на курсах. Главное, чтобы был настрой и четкое понимание в какой области хочется работать
Сообщение отредактировал asr: 22.08.2012, 11:43:44
пользователей: 0, неизвестных прохожих: 2, скрытых пользователей: 0
Размещение рекламы на сайте Предложения о сотрудничестве Служба поддержки пользователей
© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.