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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
1-1137334030
Кумар
2006-01-15 17:07
2006.02.12
Help pleaz!


1-1137403808
elfebet
2006-01-16 12:30
2006.02.12
Отчет в MS Word


2-1137662162
tigra
2006-01-19 12:16
2006.02.12
Непонятка с exeшником


15-1138103140
Ega23
2006-01-24 14:45
2006.02.12
Настройки Delphi - что за беда?


2-1137971775
Dormidont
2006-01-23 02:16
2006.02.12
Срочно нужна помощь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский