Страница 1 из 1
Одномерный массив
Добавлено: 23 янв 2006, 22:45
pikass
Задана последовательность N вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются простыми числами.
Ну понятно, что простые это 1,2,3,5,7,11,13......
Они делятся на себя на 1 и не делятся на другие числа.
А как это связать с задачей?
Помогите, может у кого-то было что-то похожее.
Добавлено: 24 янв 2006, 08:52
LAngel
Код: Выделить всё
procedure GetSumOfSimplePlacedNumbers;
const N = 10;
var
ch: array[1..N] of Real;
s, i: Integer;
InArray: Boolean;
Simple: array of Integer;
Summ: Real;
begin
for i := 1 to N do ch[i] := Random(1000);
// заполняем массив простых чисел
for s := Low(ch) to High(ch) do
begin
InArray := True;
for i := Low(Simple)+1 to High(Simple) do
if s / Simple[i] = s div Simple[i] then InArray := False;
if InArray then
begin
SetLength(Simple, Length(Simple)+1);
Simple[High(Simple)] := s;
end;
end;
// считаем сумму
Summ := 0;
for i := Low(Simple) to High(Simple) do
Summ := Summ + ch[Simple[i]];
ShowMessage('Сумма: ' + FloatToStr(Summ));
end;
Добавлено: 24 янв 2006, 12:45
SydNey
Формируешь множество простых чисел "решетом Эратосфена" и проходишь по массиву: если номер элемента входит в это множество, прибавляешь элемент к сумме.
Добавлено: 24 янв 2006, 20:12
pikass
Спасибо большое, работает хорошо.
Добавлено: 25 янв 2006, 14:54
Blood_Magic
Это не форум программистов, а форум по решению практических работ?
Добавлено: 25 янв 2006, 15:13
LAngel
Посмотрит - научится.
А что, алгоритм лучше словами?

)))