![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
eldar219 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 34 Пол: Мужской Реальное имя: eldar Репутация: ![]() ![]() ![]() |
Составить программу для нахождения делителей некоторого числа
Плизз помогите как начать решать |
Unconnected |
![]()
Сообщение
#2
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Можно так:
Procedure divz(n:integer);
var i:byte;
begin
for i:=1 to n do if (n mod i=0) then writeln(i);
end;
var n:integer;
begin
writeln('Vvedite N');
readln(n);
divz(n);
readln;
end.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
for i:=1 to n do if (n mod i=0) then writeln(i);
Вопрос: нужно ли делать цикл аж до n? )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Unconnected |
![]()
Сообщение
#4
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
А почему бы и нет?) n тоже является делителем самого себя...
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата n тоже является делителем самого себя... Для того, чтобы это показать - совсем не обязательно цикл продолжать до N. Все проще гораздо... |
Unconnected |
![]()
Сообщение
#6
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Вот так:
Procedure divz(n:integer);
var i:byte;
begin
writeln(n);
for i:=1 to (n div 2) do if (n mod i=0) then begin
writeln(i);
end;
end;
var n:integer;
begin
writeln('Vvedite N');
readln(n);
divz(n);
readln;
end.
Т.к. из двух множителей один не может быть меньше двух в нашем случае. Сообщение отредактировано: Unconnected - -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот так: Гм. Тогда, может быть, и начинать не с 1? for i:=1 to (n div 2) do if (n mod i=0) then begin ...
Т.к. из двух множителей один не может быть меньше двух в нашем случае. ![]() Unconnected, думай дальше. Ты прошел некоторую часть пути, но не до конца )). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#8
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Можно даже до половины не идти.
-------------------- |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Можно даже до половины не идти. Именно так ![]() ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Unconnected |
![]()
Сообщение
#10
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ммм ну не знаю, я с циклом for ничего больше не придумал, кроме как:
Procedure divz(n:integer);
var i,i2:byte;
begin
writeln(n);
i2:=1;
for i:=n div 2 downto i2 do if (n mod i=0) then begin
writeln(i);
inc(i2,n div i);
end;
end;
var n:integer;
begin
writeln('Vvedite N');
readln(n);
divz(n);
readln;
end.
Но тут количество итераций то же самое вроде. Есть подозрение, что там можно делать допустим n div 5 и потом что-то домножать, но не додумался до конца) -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Client |
![]()
Сообщение
#11
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
![]() думаю, имелось в виду после цикла сделать writeln(n);
И можно идти до значения корня из числа ![]() |
Unconnected |
![]()
Сообщение
#12
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата И можно идти до значения корня из числа smile.gif И как ты себе это представляешь? ![]() -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Client |
![]()
Сообщение
#13
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
for i:=2 to round (sqrt(n) )
Сообщение отредактировано: Client - |
Lapp |
![]()
Сообщение
#14
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
for i:=2 to round (sqrt(n) )
И есть еще одна вещь, которую следует упомянуть.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Client |
![]()
Сообщение
#15
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
тут возможно:
1) можно включить и единицу 2) возможно есть делитель n/2 3) ну и само число n ![]() |
TarasBer |
![]()
Сообщение
#16
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ, автор же ещё даже ни одного ответа не сделал. А то так всё и раскроем.
-------------------- |
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 13:45 |