![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задачка
Зацени © (2006-10-02 17:08:00)Числа, равные сумме своих делителей (кроме себя самого), называются совершенными. Например, число 28 является совершенным: 28 = 1 + 2 + 4 + 7 + 14. Найти все совершенные числа от 1 до 10000
Вот подкинули мне такую задачу и я не знаю как её решать, помогите пожалуйста.Полного кода мне не нужно, а вот примерный алгоритм не помешает.
Германн (2006-10-02 18:57:00) [1]1. sum нужно присваивать не 0, а 1 как в [6]
2. это нужно делать внутри цикла по а
3. проверку sum=a вынести за границу цикла по i
Слил (2006-10-02 18:51:00) [2]Не знаю так или не так
sum:=0;
for a:=1 to 1000 do begin
for i:=2 to a div 2 do
if (a mod i)=0 then begin
sum:=sum+i;
if sum=a then
Write(sum:4);
end;
end;
но по другому не могу придумать.Плиз, если не правильно то подскажите где именно, и что я делаю не так.
Ketmar (2006-10-02 18:24:00) [3]а там -- нормальный код. в девятом классе уже можно язык знать. у тебя -- явное непонимание именно языка. советую просто от хорошего настроения: дальше ничего не спрашивай. подумай сам. один раз разбершься -- на всю жизнь будешь рад. в крайнем случае -- пиши. пробуй.
хинт: алгоритм неверен.
Слил (2006-10-02 18:19:00) [4]а что там?
я вроде сумму проверяю
Ketmar (2006-10-02 18:15:00) [5]см. [6]
Слил (2006-10-02 18:10:00) [6]В данный момент нет паскаля под рукой но мне кажется что прога будет выглядить примерно так
nd:=0;
sum:=0;
for j:=1 to 1000 do begin
for i:=2 to a div 2 do
if a mod i=0 then
begin
sum:=sum+i
writeln;
if sum:=j then
Write(j:4);
end;
если что не так то обьясните почему, а то я только в 9 классе и мне надо ущнавать по больше
Ketmar (2006-10-02 17:59:00) [7]>[6] MBo(c) 2-Oct-2006, 17:58
зачем воспитательный процесс нарушаешь? %-)
MBo (2006-10-02 17:58:00) [8]sum:=1;
for i:=2 to a div 2 do
if (a mod i) = 0 then
sum := sum + i;
Ketmar (2006-10-02 17:57:00) [9]думай. в начале сумма, натурально, равна нулю. нашёл очередной делитель -- сразу прибавил его к искомой сумме. и так для всех. на выходе получаешь именно то, что хотел. больше разжёвывать не буду -- и так нарушил традицию "отсылки за метлой". %-)
Слил (2006-10-02 17:54:00) [10]Видишь в чем проблема у меня все делители выраженны одной переменной, и как посчитать их сумму я не знаю.
Ketmar (2006-10-02 17:52:00) [11]ну и? посчитать сумму делителей и проверить, равна ли она исследуюмому числу. ы?
Слил (2006-10-02 17:46:00) [12]Я имею в виду алгоритм программы.Я знаю как найти делители:
Write;
Readln(a);
nd:=0;
for i:=2 to a div 2 do
if a mod i=0 then
begin
writeln;
Write(i:4);
nd:=nd+1;
end;
но что делать далбше не знаю вот и прошу помощи.
Ketmar (2006-10-02 17:13:00) [13]в школу. быстро. и попросить математичку, чтобы поставила побольше двоек. потому что алгоритм ты сам только что описал.