maciek103 Opublikowano 22 Kwietnia 2005 Zgłoś Opublikowano 22 Kwietnia 2005 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
koparka Opublikowano 22 Kwietnia 2005 Zgłoś Opublikowano 22 Kwietnia 2005 tez bym prosil o odpowiedz :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ayem Opublikowano 22 Kwietnia 2005 Zgłoś Opublikowano 22 Kwietnia 2005 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 :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
jg5 Opublikowano 22 Kwietnia 2005 Zgłoś Opublikowano 22 Kwietnia 2005 (edytowane) 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 22 Kwietnia 2005 przez jg5 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...