Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2014, 13:51   #1
Aleksey54rus
Новичок
Джуниор
 
Регистрация: 22.06.2014
Сообщений: 1
По умолчанию Решето́ Эратосфе́на (паскаль)

ребята мне 14 лет решил выучить паскаль

вот что делаю Решето́ Эратосфе́на — алгоритм нахождения всех простых чисел до некоторого целого числа n, который приписывают древнегреческому математику Эратосфену Киренскому[1]. Как и во многих случаях, здесь название алгоритма говорит о принципе его работы, то есть решето подразумевает фильтрацию, в данном случае фильтрацию всех чисел за исключением простых. По мере прохождения списка нужные числа остаются, а ненужные (они называются составными) исключаются.



вот мой код правильно или нет не понимаю (где ошибка) помогите

Код:
var 
 i,j,max,cx,k:integer;
 f:boolean;
 time:integer;
m:array of boolean;

begin 
max:=10000;
time:=milliseconds;
for i:=1 to max do 
begin
 f:=true;
 for j:=2 to trunc (sqrt(i)+1)do
 if i mod j =0 then
 begin 
    f:=false;
    break;
    end;
   if f then cx+=1;
   end;
   time:=milliseconds-time;
    writeln(time/1000, 'сек.count:',cx);

cx:=0;
setlength(m,max+1);
time:=milliseconds;
//1 2 3 4 5 6 7 8 9
//- - - x - x - x x
for i:=2 to max do 
begin
if not m[i] then 
begin 
  cx+=1;  
  k:=i;
  while(k<=max-i) do 
  begin
  k+=i;
  m[k]:=true;  
  end;

end;

end;
time:=milliseconds-time;
writeln('лучший алгоритм:время ',time/1000, 'сек. Count: ',cx);
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.06.2014 в 14:11.
Aleksey54rus вне форума Ответить с цитированием
Старый 22.06.2014, 14:20   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
uses DateUtils, SysUtils;
const
	MAX : LongInt = 100;
var
	i, j, cx, k : LongInt;
	f : Boolean;
	st, en : TDateTime;
	m : array of boolean;

begin
	cx := 0;	

	st := Now;

	for i := 1 to max do begin
		f := true;
		for j := 2 to trunc (sqrt(i+1))do
			if i mod j =0 then begin
				f := false;
				break;
			end;
		if f then begin Inc(cx); Write(i, ' ') end
	end;
	
	en := Now;
	writeln('Перебор до корня ', MilliSecondsBetween(st, en));


	cx := 0;
	
	setlength(m,max);
	st := Now;
	
	for i := 2 to max do
		if not m[i] then begin
			Inc(cx,1);
			k := i;
			while(k<=max-i) do begin
				Inc(k, i);
				m[k] := true;
			end;
		end;
	en := Now;

	for i := 1 to Length(m) do
		if not m[i] then Write(i, ' ');
	writeln('Решето ', MilliSecondsBetween(st, en))
end.
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модель Ло́тки — Вольтерра ́(Хищник-Жертва).Mathcad Victorials2648 Помощь студентам 3 27.03.2014 20:22
Решето эротосфена(С++) Alex_Dep Помощь студентам 3 22.09.2012 23:46
Решето Эратосфена cbuilderx Помощь студентам 1 25.10.2010 18:44