viesiek [ Legend ]
pascal
mam zadanie zrobić w pascalu program, który z 20 podanych przez użytkownika liczb znajdzie i wypisze tylko liczby pierwsze. no więc mam to zrobić za pomocą tabeli i do momentu, w którym użytkownik podaje liczby jest ok, wygląda to tak:
program liczbypierwsze;
uses crt;
var a:integer;
pierwsze:array[1..20]of integer;
begin
clrscr;
writeln('podaj 20 liczb');
a:=0;
repeat
a:=a+1;
readln(pierwsze[a]);
until a=20;
i teraz jak sprawdzić, które z tych liczb są pierwsze? szukałem w necie, ale nie potrafię tego znaleźć :/
Dodam, że nie może to być jakoś super zaawansowane, mamy raczej poziom bardzo podstawowy, więc niech to się zmieści w jakiejś podstawowej pętli :)
z góry dzięki za pomoc :)
jojko999 [ Generaďż˝ ]
nie znam się na pascalu, ale moim zdaniem można zrobić tak:
jeśli zakres podawanych liczb jest niewielki to robisz pętlę w pętli:
if a:=3
writeln: liczba pierwsza, albo inna komenda oznajmiająca, że to liczba pierwsza
else
if a:=5
writeln: liczba pierwsza
else...
itd.
lub jeśli większy zakres to tworzysz tablicę z liczbami pierwszymi, a potem
if "a" nierówne "którykolwiek pierwiastek tablicy"
writeln: liczba pierwsza
oczywiście musisz to teraz zawrzeć w kodzie
GBreal.II [ floydian ]
ja bym to zrobil inaczej jeszcze:
for a=1 to 20 do
--begin
--pierw := true
--koniec = sqrt(a) <-- tylko, zeby naturalne bylo, nie pamietam jak to jest w pascalu :)
--for i:=2 to koniec do
----begin
----if (a mod i) = 0 then
------begin
------nie jest pierwsza
------pierw := false
------break
------end
----end
--if pierw then (wypisz ze jest pierwsza)
end
jesli nie rozumiesz, to sie pytaj. Moga byc jakies bledy implementacyjne (nie liczac oczywiscie braku wszekiego rodzaju srednikow. Minusy sa po to, zeby bylo wciecia widac.
Mam nadzieje, ze pobieznie idee algorytmu rozumiesz. Jak nie to pytaj :)
To ja tu staram sie algorytm napisac w miare poprawnie, a niektorzy sie Wikipedia wyreczazja :P
Regis [ ]