Program w Pascalu (pary liczb)

0

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 ...

0

Krok 1-szy: wyszukaj wszystkie liczby pierwsze z podanego przedziału - co było wielokrotnie - odsyłam do wyszukiwarki.. - najlepiej je wpisać do tablicy

Krok 2-gi: wyświetl wszystkie możliwe pary - 2 razy pętla FOR + write()

0

Moglbys mi sam 2 krok zrobic jak zrobic zeby wyswietlalo same te pary? .

Bo przeszukac zbior w celu znalezienia liczb pierwszych wiem jak to zrobic ale tej 2 czesci nie wiem ..... pomórzcie .... :(

0
For I:=1 to ilosc Do
If (I mod 2) = 0 then write(pierwsze[i]+', ') else write(pierwsze[i]+' i ');
0

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

0

Tak oto chodzili,zeby liczby pierwsze (pary) byly rozne (roznica miedzy nimi ) 2 ...

Dzieki za pomoc ...

0

Wow , dobra nie mam pascala by to sprawdzic bo siadl mi 2 dysk i dlatego ucze sie w głowie myslowo, czy ten program jest poprawny ?, czyli ma wyswietlac pary liczb pierwszych (rozniacych sie o 2 ) z przedzialu o 5 do 100 ? ...

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]);

end;
Readln;
end.

0

Jak na moje oko poprawny.
Fakt, napisalem wtedy zly kod, zle zrozumialem [wstyd]

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1