Skocz do zawartości
maciek103

Liczby Pierwsze

Rekomendowane odpowiedzi

Witam!

Chciałem stworzyc program w Turbo Pascalu który polega na tym że ja wprowadzam z klawiatury kilka liczb a program sumuje mi liczby pierwsze i wszystkie liczby pozostałe. Problem polega jednak na tym że nie bardzo wiem jakie polecenie napisać żeby program rozróżniał liczby pierwsze od innych. Bardzo prosze o pomoc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie da sie tak poprostu wydac komendy zwracajacaej liczby pierwsze.

 

TUTAJ swietne wyjasnienie algorytmu sprawdzania sprawdzania liczb pierwszych.

 

Ale do twojego przypadku proponuje funkcje:

 

function isPrime(x : integer) : integervar    i : integer;   isPrime = 1;begin   for i:=2 to x-1 do   begin      if (( x mod i ) = 0)         isPrime = 0;   end;end;

PS. sorrki za bledy skladniowe - dobre 5 lat nie tykalem sie paszczala

 

w srocie zalozene jest takie:

- podajesz funkcji jako argument liczbe (calkowita) jaka chcesz sprawdzic czy jest pierwsza

- funkcja zwraca 1 - jest pierwsza, 0 - nie jest

- robi to sprawdzajac czy reszta z dzielenia danej liczby przez wszystko z wyjatkiem 1 i jej samej jest rozna od 0 - jesli w ktoryms kroku nie jest rozna to liczba nie jest pierwsza.

 

jak ktos pamieta pascala (ktow ogole jeszcze tego uczy?) to niech poprawi ten kod :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mozna wykorzystać Sito Eratostenesa.

Powiedzmy ze chcemy znalezc wszystkie liczby pierwsze z przedziału 2 - 20

Najpierw liczymy pierwiastek z liczby elementów SQRT(20) wychodzi 4.47. Zaokraglamy go w dół czyli bedzie 4.

Powiedzmy ze liczby od 2 do 20 umieszczamy w tabeli.

Nastepnie bierzemy pierwszy element z tabeli (2) i dzielimy wszystkie kolejne elementy, te które podzielą się bez reszty wykreślamy/kasujemy.

Następnie bierzemy kolejny element z tablicy (3) i dzielimy kolejne elementy i te które podzielą się bez reszty wykreślamy.... i tak dalej

 

Pewnie zapytacie dokąd dzielić. Ano właśnie poto był liczony pierwiastek z 20. Pierwiastek z liczby elementów tablicy zaokrąglony w dół mówi do jakiej liczby mamy dzielić. Czyli w tym przypadku wystarczy jak podzielimy elementy tablicy kolejno przez 2, 3, 4 i po takim zabiegu zostaną juz tylko liczby pierwsze.

 

EDIT:

Chyba nie o to chodziło ale moze komuś się przyda ;)

Edytowane przez jg5

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...