Program ktory przeszuka liczby od 5 do 100 i wyswietli wszystkie pary liczb pierwszych np 11 i 13 , 17 i 19 itp ..
Z góry bardzo dziekuje, jutro mam zaliczac ...
Jakąś dziwną rzecz napisałes Wasyl , nie rozumiem tego.
Prodowi chyba chodziło o pary liczb pierwszych rozniace sie o 2 (to znaczy o dwie sasiednie liczby nieparzyste ktore sa jednoczesnie pierwsze)
Jesli pierwsze[] to tablica tych liczb pierwszych to raczej chyba tak :
for I:=1 to ilosc-1 do
if (pierwsze[i+1]-pierwsze[i]=2) then write(pierwsze[i]+', '+pierwsze[i+1]);
//no albo nie zrozumiałem
program zad34;
uses
crt;
var
N :array[1..100] of integer;
i,j : integer;
c : integer;
k:integer;
suma : integer;
pierwsza : Boolean;
begin
clrscr;
ilosc:=0;
for i := 5 to 200 do begin
pierwsza:=true;
for j:=2 to i-1 do begin
c:= i mod j;
if c= 0 then
pierwsza:=false
end;
if pierwsza then begin
ilosc:=ilosc+1;
n[k]:=i;
end;
for k:=1 to ilosc-1 do
if (pierwsze[k+1]-pierwsze[k]=2) then write(pierwsze[k]+', '+pierwsze[k+1]);
Widze dwa błędy i jedną rozrzutnośc.
Nie inicjujesz nigdzie k a piszesz n[k]:=i (to błąd). Wtym miejscu w ogole k nie jest potrzebne . Pętle for j niepotrzebnie wykonujesz do konca jesli juz wiadomo ze to nie jest liczba pierwsza, a więc:
begin
clrscr;
ilosc:=0;
for i := 5 to 200 do begin
pierwsza:=true;
for j:=2 to i-1 do begin
c:= i mod j;
if c= 0 then begin
pierwsza:=false;break;
end;
end;
if pierwsza then begin ilosc:=ilosc+1; n[ilosc]:=i;end;
end;//tu brakowalo enda
for k:=1 to ilosc-1 do
if (pierwsze[k+1]-pierwsze[k]=2) then write(pierwsze[k]+', '+pierwsze[k+1]);
//end; a tu jest ten end zbedny
readln;
end.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.