Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];

Вниз

одномерные массивы   Найти похожие ветки 

 
sergik   (2006-01-23 22:32) [0]

Задана последовательность N вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются простыми числами.

Ну прсотые числа это я знаю 1,2,3,5,7,11,13,17, т.е. те которые делятся на себя, на единицу и не делятся на другие числа. А как это все задать может кто в курсе? Помогите, если есть возможность


 
digital   (2006-01-23 23:47) [1]

1.Ввести все числа в массив.
2.действовать по алгоритму:
Перебрать все числа с 1 по N, и если число-простое, то суммировать его с остальными простыми числами.
---------
Как проверить, что число k простое? Надо в цикле i= 1 to k делить это число
на  i. Если при всех i кроме 1,k число делится с остатком - то это простое число.


 
Sha ©   (2006-01-24 13:15) [2]

Если задача учебная, то самостоятельно разобраться с этим будет полезно:

uses
 Math;
procedure Tfrm.Button1Click(Sender: TObject);
const
 count=8;
var
 a: array of real;
 sum: real;
 i, j: integer;
begin;
 Randomize;
 SetLength(a,count);
 for i:=0 to count-1 do a[i]:=Random;

 sum:=0;
 if count>0 then sum:=a[0];
 for i:=2 to count do
 if not IsNAN(a[i-1]) then begin;
   sum:=sum+a[i-1];
   j:=i+i;
   while j<=count do begin;
     a[j-1]:=NAN;
     j:=j+i;
     end;
   end;
 ShowMessage(FloatToStr(sum));
 end;


 
SergP.   (2006-01-24 14:12) [3]


> Как проверить, что число k простое? Надо в цикле i= 1 to
> k делить это число
> на  i. Если при всех i кроме 1,k число делится с остатком
> - то это простое число.


проще будет если в цикле
for i=2 to trunc(sqrt(k)) do ...


 
gdaujk ©   (2006-01-24 15:34) [4]

SergP.   (24.01.06 14:12) [3]

Где-то читал, что конструкции типа:

for i=2 to trunc(sqrt(k)) do ...

замедляют (может и несущественно) работу программы, ибо trunc(sqrt(k)) вычисляется в каждом круге цикла. Лучше сделать:

var
 Count: Integer;
begin
 ...
 Count := Trunc(Sqrt(k));
 for i := 2 to Count do
 ...
end;


 
MBo ©   (2006-01-24 15:37) [5]

>ибо trunc(sqrt(k)) вычисляется в каждом круге цикла.
ты плохое читал. Это неверно.


 
gdaujk ©   (2006-01-24 15:46) [6]

MBo ©   (24.01.06 15:37) [5]

...и я даже нашёл источник:

http://www.delphimaster.ru/articles/optimization.html

Вынесение инвариантного кода за пределы цикла – не выносится. Наиболее распространенный недочет – условие цикла записывается как:

for i:=0 to memo1.lines.count – 1 do...


 Delphi будет при каждой итерации вызывать метод count, вычитать из результата 1 и потом уже сверять. Настоятельно рекомендуется переписывать подобный код как

lin := .lines.count – 1;
for i:=0 to lin do...


Как это понимать?

PS: сорри за офтоп...


 
gdaujk ©   (2006-01-24 15:49) [7]

Ой, там же написано: "Запрещается перепечатка данной статьи или ее части без согласования с автором" :-))


 
MBo ©   (2006-01-24 16:06) [8]

>Как это понимать?
Понимать, увы, так, что автор не читал описание языка Pascal и не удосужился проверить.


 
gdaujk ©   (2006-01-24 16:29) [9]

MBo ©   (24.01.06 16:06) [8]

Автора бы той статейки сюда... Поспорили бы вы... А я, дурак, посмотрел бы :-))

PS: М-да... "Всё смешалось в доме Облонских" (С) Лев Толстой...


 
gdaujk ©   (2006-01-24 16:45) [10]

MBo ©   (24.01.06 16:06) [8]

Ваша правда. Проделал следующие:

var
 I, Count: Integer;
begin
 Count := 10;
 for I := 0 to Count - 1 do
   Count := Count - 1;
 Label1.Caption := IntToStr(Count);
end;


Проходов 10, Count в конце концов равняется 1. А можно объяснить в краце, что происходит: выделяется дополнительная переменная, или ещё что?

PS: доверяй, но проверяй... Или семь раз доверься, один раз проверся.


 
Johnmen ©   (2006-01-24 16:57) [11]

http://delphimaster.net/view/15-1136989131/



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.056 c
8-1125754470
stef
2005-09-03 17:34
2006.02.12
масштабирование canvas


2-1138188094
Vit2000
2006-01-25 14:21
2006.02.12
Отображение данных из XML


1-1137335863
Compton's G
2006-01-15 17:37
2006.02.12
Проблема HKEY и сети


15-1137610275
Ксардас
2006-01-18 21:51
2006.02.12
Подскажите прогу...


8-1125974415
OlegM
2005-09-06 06:40
2006.02.12
MediaPlayer проиграть с нужной позиции и закончить на нужной





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский