Mateusz J. utworzono 10 września 2008 utworzono 10 września 2008 Witam Jak w nazwie tematu. Chciałbym algorytm, który będzie generował liczby pierwsze z zakresu 1-100. Język Pascal, chciałbym, aby, to było napisane jak najprościej się da, jeśli, to możliwe Znalazłem parę na google, ale nie wiem jak sprawdzić, czy algorytm działa, także jakby ktoś mi powiedział byłoby fajnie pozdrawiam jesiona EDIT var i : cardinal;begin Testuj := true; i := 2; while i < p do if p mod i = 0 then begin Testuj := false; break; end else i := i + 1;end; źródło Czy ten algorytm jest na 100% dobry Jeśli tak, czy ktoś mógłby mi opisać co robi jaka komenda? Tak w skrócie.
NowakoV komentarz 10 września 2008 komentarz 10 września 2008 O ile to nie jest cały program. to wszystko jest w porządku.
Esus komentarz 11 września 2008 komentarz 11 września 2008 Chcesz wyszukiwać liczby pierwsze z zakresu, będzie ich więcej niż jeden, więc przydałaby się jakaś struktura danych. Nie znam Pascala, tak ja bym to zrobił, w pseudokodzie: PRIME NUMBERS(ZAKRES)1 for i <- 1 to ZAKRES2 do WYNIKI[i]=13 WYNIKI[1] <- 0;4 for i <- 1 to ZAKRES5 do if WYNIKI[i]6 do for j <- 1 to j*i7 do WYNIKI[i*j] <- 08 for i <- 1 to ZAKRES9 do if WYNIKI[i] 10 do print(i) Powinno być dobrze. Wcięcia formują bloki, a[] to tablica a, po if znajduje się warunek, `<-` to przypisanie wartości. Próbowałem napisać to w Pascalu, nie wiem czy dobrze: program prime;var i,j : integer; wyniki : Array[1..100] of boolean;begin for i:=2 to 100 do wyniki[i] := TRUE; for i:=2 to 100 do if wyniki[i] then begin j:=i; while i*j<=100 do begin wyniki[i*j] := FALSE; j:=j+1; end; end;for i:=1 to 100 do if wyniki[i] then write(i,' ');readln;end. Edit: rozwiązanie na pewno bardziej efektywne niż przy użyciu dzielenia modulo. Można ten algorytm nieco zmodyfikować by był bardziej efektywny, ale to już jak ktoś bardzo chce.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.