Помощь - Поиск - Пользователи - Календарь
Полная версия: Циклические алгоритмы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Flatterer19
Написать программу, которая подчитывает количество чисел кратных k, но некратных l, в диапазоне от m до n.
Lapp
x:=0;
for i:=m to n do if (i mod k=0)and(i mod l>0) then Inc(x);
Flatterer19
Цитата(Lapp @ 17.12.2009 2:24) *

x:=0;
for i:=m to n do if (i mod k=0)and(i mod l>0) then Inc(x);




Можно поподробнее вместе с условием с началом программы, я вообще новичок в этом...
Lapp
Цитата(Flatterer19 @ 17.12.2009 2:26) *
Можно поподробнее вместе с условием с началом программы, я вообще новичок в этом...
... а я старичок на такое разводиться.
Тебе написана вся функциональная часть программы. Добавь описания, ввод и вывод - и все. Не знаешь, как - бери учебник и вперед.

А если тебе нужно все к паре в ротик положить - тогда вали вообще из программирования, и без тебя дышать будет легче..
andriano
А если так?
for i:=((m + k - 1) div k) to (n div k) do if (i*k mod l>0) then Inc(x);
Lapp
Цитата(andriano @ 17.12.2009 8:51) *
А если так?
for i:=((m + k - 1) div k) to (n div k) do if (i*k mod l>0) then Inc(x);
А зачем?
andriano
Цитата(Lapp @ 17.12.2009 9:22) *
А зачем?
Ну, если требуется работать в диапазоне от 0 до МахInt, причем k и l имеют порядок sqrt(MaxInt), то разница, думаю, будет хорошо заметна (по крайней мере, для 32-разрядного компилятора).
В любом случае, компьютер хоть и железный, но вряд ли целесообразно заставлять его делать лишнюю работу.
Lapp
Цитата(andriano @ 17.12.2009 19:22) *
В любом случае, компьютер хоть и железный, но вряд ли целесообразно заставлять его делать лишнюю работу.
Гм. Эта "лишняя работа" делается исключительно согласно условию задачи (см. название темы). В противном случае все решается одной формулой вообще без циклов.

В этом ключе - любая учебная задача есть лишняя работа. Хотя, конечно, согласен, что условие лучше давать более разумное. Иначе скоро мы увидим что-нить типа "подсчитать в цикле количество натуральных чисел от одного до 100" smile.gif
andriano
1. Предложенный вариант удовлетворяет исходному условию "циклическая задача".
2. Что касается именно учебных задач, то IMHO нужно с самого начала учить программировать правильно, а не сначала учить писать как попало, а потом переучивать. А "правильно" - это значит оптимальным при заданных условиях и ограничениях способом.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.