Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2007, 21:50   #1
Radiofuck
 
Регистрация: 27.12.2006
Сообщений: 5
Стрелка Что-то не так

[Pascal]
Найти натуральное число от 1 до 10000 с максимальной суммой делителей.
1.Преподаватель сказала что-то не так,помогите. 2.Как вывести все его делители на экран.
Код:
var i,j,s1,summ,ind:integer;
begin
summ:=0;
ind:=0;
for i:=1 to 10000 do
begin
s1:=0;
      for j:=1 to i do
          if i mod j = 0 then s1:=s1+j;
      if s1>summ then
         begin
          summ:=s1;
          ind:=i;
         end;
end;
writeln(ind, ' ', summ);
readln;
end.
Radiofuck вне форума Ответить с цитированием
Старый 16.01.2007, 21:57   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Если брать по твоему коду, то следующие строки
выведут все делители (также как ты искал их):

for i:=1 to ind do
if (ind mod i) = 0 then write(i,' ');
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 16.01.2007, 22:06   #3
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Вот рабочий вариант:
Код:
Function MaxSum(I:Integer):Integer;
Var J,S:Integer;
Begin
S:=0;
For J:=1 to I Do
If I Mod J = 0 Then
S:=S+J;
MaxSum:=S;
End;

Var I,Max:Integer;
Begin
Max:=1;
For I:=2 to 10000 Do
If MaxSum(I) > MaxSum(Max) Then
Max:=I;
WriteLn(Max,' ',MaxSum(Max));
ReadLn;
End.
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск