Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизЗадачка Найти похожие ветки
← →
Зацени (2006-10-02 17:08) [0]Числа, равные сумме своих делителей (кроме себя самого), называются совершенными. Например, число 28 является совершенным: 28 = 1 + 2 + 4 + 7 + 14. Найти все совершенные числа от 1 до 10000
Вот подкинули мне такую задачу и я не знаю как её решать, помогите пожалуйста.Полного кода мне не нужно, а вот примерный алгоритм не помешает.
← →
Ketmar © (2006-10-02 17:13) [1]в школу. быстро. и попросить математичку, чтобы поставила побольше двоек. потому что алгоритм ты сам только что описал.
← →
Слил (2006-10-02 17:46) [2]Я имею в виду алгоритм программы.Я знаю как найти делители:
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:52) [3]ну и? посчитать сумму делителей и проверить, равна ли она исследуюмому числу. ы?
← →
Слил (2006-10-02 17:54) [4]Видишь в чем проблема у меня все делители выраженны одной переменной, и как посчитать их сумму я не знаю.
← →
Ketmar © (2006-10-02 17:57) [5]думай. в начале сумма, натурально, равна нулю. нашёл очередной делитель -- сразу прибавил его к искомой сумме. и так для всех. на выходе получаешь именно то, что хотел. больше разжёвывать не буду -- и так нарушил традицию "отсылки за метлой". %-)
← →
MBo © (2006-10-02 17:58) [6]sum:=1;
for i:=2 to a div 2 do
if (a mod i) = 0 then
sum := sum + i;
← →
Ketmar © (2006-10-02 17:59) [7]>[6] MBo(c) 2-Oct-2006, 17:58
зачем воспитательный процесс нарушаешь? %-)
← →
Слил (2006-10-02 18:10) [8]В данный момент нет паскаля под рукой но мне кажется что прога будет выглядить примерно так
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 18:15) [9]см. [6]
← →
Слил (2006-10-02 18:19) [10]а что там?
я вроде сумму проверяю
← →
Ketmar © (2006-10-02 18:24) [11]а там -- нормальный код. в девятом классе уже можно язык знать. у тебя -- явное непонимание именно языка. советую просто от хорошего настроения: дальше ничего не спрашивай. подумай сам. один раз разбершься -- на всю жизнь будешь рад. в крайнем случае -- пиши. пробуй.
хинт: алгоритм неверен.
← →
Слил (2006-10-02 18:51) [12]Не знаю так или не так
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;
но по другому не могу придумать.Плиз, если не правильно то подскажите где именно, и что я делаю не так.
← →
Германн © (2006-10-02 18:57) [13]1. sum нужно присваивать не 0, а 1 как в [6]
2. это нужно делать внутри цикла по а
3. проверку sum=a вынести за границу цикла по i
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c