Banał? Pierdoła? Dla doświadczonych rozpykanie prostej aplikacji drukującej liczby pierwsze nie powinno zająć dłużej niż dwie, trzy minuty. To zaledwie kilka linijek kodu. Ale niech Was nie zwiedzie intuicyjna prostota takiego zdania. Aplikacje z liczbami pierwszymi to doskonały przykład aplikowania prostych zasad do logiki rządzącej językami programowania, czyli kluczowej umiejętności programisty. KLUCZOWEJ! Pisał o tym Jeff Atwood, autor chyba mojego ulubionego bloga o programowaniu Coding Horror.:

I’m more than willing to cut freshly minted software developers slack at the beginning of their career. Everybody has to start somewhere. But I am disturbed and appalled that any so-called programmer would apply for a job without being able to write the simplest of programs. That’s a slap in the face to anyone who writes software for a living.

The vast divide between those who can program and those who cannot program is well known. I assumed anyone applying for a job as a programmer had already crossed this chasm. Apparently this is not a reasonable assumption to make. Apparently, FizzBuzz style screening is required to keep interviewers from wasting their time interviewing programmers who can’t program.

Wpis Why Can’t Programmers Program rozszedł się (i nadal rozchodzi) viralowo po sieci, a komentarze tylko potwierdzają obserwacje Jeffa. So called Programiści, nawet nie koniecznie wchodzący do branży, nie potrafią poradzić sobie z prostymi problemami. Typu liczby pierwsze, typu słynny FizzBuzz. Dlatego, imho, tak ważne jest poświęcenie czasu na podstawach, zżycie się z logiką. Do dzieła.

Logika Liczb Pierwszych: Dzielą się przez 1 i przez samą siebie.

 

1) ŁOPATOLOGIA

Efekt:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47

Jak najlepiej zrozumieć logikę procesu, który zachodzi w tym programie? Można podstawić pod zmienne konkretne liczby i przejść przez proces z tymi zmiennym. Pętla for składa się z trzech elementów: inicjalizacji, warunku i iteracji. W pierwszej pętli definiujemy zmienną integer o wartości 2 (inicjalizacja), warunek – liczba musi być mniejsza lub równa 50 (szukamy liczb pierwszy w zakresie od 2 do 50) oraz iterację – zwiększamy zmienną o 1.
Druga pętla FOR definuje drugą zmienną „x” i sprawdza, czy dzieli się przez zmienną „i”, czyli defacto przez samą siebie. jeżeli tak, następuje wykonanie System.out.println(i).

Jeżeli nie, wewnętrzna pętla for zostaje przerwana i cały proces rozpoczyna się od nowa.

2) METODĄ, panie, METODĄ

Definiujemy metodę, którą później po prostu wykorzystujemy.

Efektem działania metody jest boolean – true lub false. By sprawdzić czy metoda działa, możemy w metodzie main wpisać proste:

Metoda sprawdza, czy 6 jest liczbą pierwszą.
Efekt:

W tym momencie możliwości wykorzystania metody mamy bardzo wiele. Chcemy wydrukować wszystkie liczby pierwsze z przedziału od 0 do 50?

To na razie tyle, bo sposoby na liczby pierwsze można mnożyć i mnożyć. Obecnie pracuję na kursie Java Masterclass na Udemy – POLECAM MOCNO!. Cena może przytłaczać, ale jest prosty sposób na to dostać kurs za 19 USD. Zapiszcie się na newsletter JavaCodeGeeks a w prezencie dostaniecie rabaty na naprawdę fajne kursy na Udemy.

A już 18 kwietnia ruszam z kursem Java w Krakowie! Będę o nim pisał!