Instrukcja warunkowa w java


(Graczek13) #1

Witam! Jaka musi zostać spełniona instrukcja warunkowa żeby program wypisywał tylko liczy pierwsze? pierwsze to takie co się dzielą tylko przez siebie i 1. Proszę o pomoc.


(Piesek64) #2

Sprawdź  czy liczba A dzieli sie przez liczby z zakresu 2 -> A-1?

Pojedyńczym ifem tego nie zrobisz.


(kuba3351) #3

Niestety, szybkiego algorytmu do generowania liczb pierwszych nie ma, naukowcy chcą go znaleźć ale nie znaleźli. Jak znajdą to internet nie będzie już bezpieczny, złamanie szyfrowania stosowanego w wielu miejscach okaże się proste jak budowa cepa. Tak więc jedyny sposób to ten podany przez kolegę wyżej.


(kowgli) #4

W skrócie - iterujesz po liczbach z jakiegoś zakresu, sprawdzasz czy są pierwsze i drukujesz tylko te które są. Sprawdzenie może być trywialne (sprawdzasz, czy reszta z dzielenia przez kolejne liczby jest równa 0), lub nieco bardziej zoptypamlizowane. Np. http://www.algorytm.edu.pl/algorytmy-maturalne/badanie-czy-liczba-pierwsza.html korzysta z zależności, że wystarczy sprawdzać do pierwiastka. Chociaż implementacja niezbyt dobra, choćby bezsensowne mnożenie i*i w każdym kroku pętli.

Iterować też nie ma sensu po wszystkich. Od razu możesz pominąć np. liczby parzyste, więc wystarczy sprawdzać co drugą.

Jeśli program ma działać tylko w określonym zakresie, to najszybsze będzie stablicowanie. Czyli przelecenie całego zakresu i zapisanie wyników w tablicy (lub jakiejkolwiek innej strukturze danych). Później sprawdzasz tylko, czy liczba jest w tablicy.