Главная страница
    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.037 c
2-1138106373
Split
2006-01-24 15:39
2006.02.12
DBGrid


2-1138285831
Daria
2006-01-26 17:30
2006.02.12
закрыть файл без сохранения


2-1138258820
tigra
2006-01-26 10:00
2006.02.12
StringGrid


15-1138016916
Pazitron_Brain
2006-01-23 14:48
2006.02.12
Оцените творчество моего брата.


3-1134459185
ANB
2005-12-13 10:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский