function prost(num:integer):boolean;
label 1;
var i:integer;
begin
prost:=true;
for i:=2 to num div 2 do
if num mod i = 0 then begin prost:=false; goto 1 end;
1:
end;
Коректив листинга
Помогите, плз, в такой проблеме: у мя есть прога (смотри аттач), которая вычисляет сумму всех вводимых элементов, порядковые номера которых - простые числа. При этом все простые числа хранятся в массиве. Прога работает на "отлично", но нужно внести небольшой коректив, а именно: не хранить в процессе выполнения алгоритма простые числа. Как это сделать? подскажите пожалуйста.
Код:
Возможно, я тебя неправильно понял.. Во всяклм случае - алгоритм малость ругается..
1 считаю простым(не помню точно)
критерий конца посл-и 0
Код:
var i,j:word;
a,sum,k: integer;
function prost(num:integer):boolean;
label 1;
var i:integer;
begin
prost:=true;
for i:=2 to num div 2 do
if num mod i = 0 then begin prost:=false; goto 1 end;
1:
end;
begin
k:=0; sum:=0;
Repeat
read(a);
k:=k+1;
if prost(k) then sum:=sum+a
until a=0;
writeln;
writeln(sum);
end.
a,sum,k: integer;
function prost(num:integer):boolean;
label 1;
var i:integer;
begin
prost:=true;
for i:=2 to num div 2 do
if num mod i = 0 then begin prost:=false; goto 1 end;
1:
end;
begin
k:=0; sum:=0;
Repeat
read(a);
k:=k+1;
if prost(k) then sum:=sum+a
until a=0;
writeln;
writeln(sum);
end.
Код:
function prost(num:integer):boolean;
var
i,k:integer;
begin
prost:=true;
k:=round(sqrt(a));
for i:=2 to k do
if ( (a mod i)=0 ) and ( k<>1 ) then begin
prost:=false;
exit;
end;
end;
var
i,k:integer;
begin
prost:=true;
k:=round(sqrt(a));
for i:=2 to k do
if ( (a mod i)=0 ) and ( k<>1 ) then begin
prost:=false;
exit;
end;
end;
вот вам функция определяющая на простое без меток и циклов вообще
))
Код:
function prost(n:integer):boolean;
var i:integer;
function pr(n,i:integer):boolean;
begin
if i<=n div 2 then pr:=not (n mod i = 0) and pr(n,i+1)
else pr:=true
end;
begin i:=2;
prost:=pr(n,i)
end;
var i:integer;
function pr(n,i:integer):boolean;
begin
if i<=n div 2 then pr:=not (n mod i = 0) and pr(n,i+1)
else pr:=true
end;
begin i:=2;
prost:=pr(n,i)
end;
должно работать :)
Спасибо, ребят! В благодарность - голос за каждого! ;)