Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

Задачка   Найти похожие ветки 

 
Зацени   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.075 c
2-1160031008
den74
2006-10-05 10:50
2006.10.22
ShellExecute и WinRar


2-1159787370
Димыч
2006-10-02 15:09
2006.10.22
передача нажатия TAB в другую прогу


15-1159503207
ZeroDivide
2006-09-29 08:13
2006.10.22
Command Line компиляторы для Турбо в готовы


2-1159945345
pavel_guzhanov
2006-10-04 11:02
2006.10.22
Кто-нибудь пользовался IBBackupService?


2-1159793101
thvfrjd
2006-10-02 16:45
2006.10.22
элемент управления