Поиск максимума, сумма делителей
Вводится длина одномерного массива, состоящего из целых чисел, и его элементы. Найти самую большую сумсму делителей одного элемента
Сделаю. Обязательно договоримся! 255507394.
Уважаемые админы и модераторы! сделайте, пожалуйста, личную переписку, раз уже нельзя писать во фрилансе предложения помощи!!!
Уважаемые админы и модераторы! сделайте, пожалуйста, личную переписку, раз уже нельзя писать во фрилансе предложения помощи!!!
Мои мысли настолько гениальны, что санитары уже приехали!
Ася 255507394.
Ася 255507394.
Пишите в аську 55655222 - помогу.
Ввод чисел сделал рендомный. Если необходимо, то сделайте ручным.
[syntax='Pascal']
uses
Crt;
var
a:array[0..100] of integer;
i,j,n,k,max,pos,z:integer;
begin
ClrScr;
k:=0;
max:=0;
write('Введите кол-во элементов массива: ');
readln(n);
writeln;
randomize;
for I := 1 to n do
a:=random(50);
for I := 1 to n do
writeln(i, ' - ', a);
writeln('------------');
for I := 1 to n do
begin
for j := 1 to a do
If (a mod j = 0) then
k:=k+j;
if max<k then
begin
max:=k;
z:=a;
pos:=i;
end;
k:=0;
end;
writeln('Максимальная сумма делителей = ',max);
writeln('Позиция = ',pos);
writeln('Число = ',z);
readln;
end.
[/syntax]
[syntax='Pascal']
uses
Crt;
var
a:array[0..100] of integer;
i,j,n,k,max,pos,z:integer;
begin
ClrScr;
k:=0;
max:=0;
write('Введите кол-во элементов массива: ');
readln(n);
writeln;
randomize;
for I := 1 to n do
a:=random(50);
for I := 1 to n do
writeln(i, ' - ', a);
writeln('------------');
for I := 1 to n do
begin
for j := 1 to a do
If (a mod j = 0) then
k:=k+j;
if max<k then
begin
max:=k;
z:=a;
pos:=i;
end;
k:=0;
end;
writeln('Максимальная сумма делителей = ',max);
writeln('Позиция = ',pos);
writeln('Число = ',z);
readln;
end.
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Можно и оптимизировать
Ничто не мешает сделать это одним циклом
Далее, for j := 1 to a do
лучше for j := 1 to a) div 2 do
Потому что из чисел от x/2+1 до x заведомо нет ни одного делителя числа х, кроме самого этого числа. Кстати - вопрос, следует ли считать это в условиях самой задачи.
Анна Я, второе и последнее китайское предупреждение - называйте темы правильно. В противном случае буду удалять
Код: Выделить всё
for I := 1 to n do
a[i]:=random(50);
for I := 1 to n do
writeln(i, ' - ', a[i]);
Код: Выделить всё
for I := 1 to n do
begin
a[i]:=random(50);
writeln(i, ' - ', a[i]);
end;
лучше for j := 1 to a) div 2 do
Потому что из чисел от x/2+1 до x заведомо нет ни одного делителя числа х, кроме самого этого числа. Кстати - вопрос, следует ли считать это в условиях самой задачи.
Анна Я, второе и последнее китайское предупреждение - называйте темы правильно. В противном случае буду удалять
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Так и знал, что на самом деле тема называется "Поиск максимума суммы делителей", а не через запятую, как это написано." писал(а):Вводится длина одномерного массива, состоящего из целых чисел, и его элементы. Найти самую большую сумсму делителей одного элемента
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Согласитесь, что из двух кусков легко сложить целое.atavin-ta писал(а):Так и знал, что на самом деле тема называется "Поиск максимума суммы делителей", а не через запятую, как это написано.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.