Sprawdzenie czy liczba jest pierwsza

0

Szukam sposobu na znalezienie min l.pierwszej większej od danej. Np. dla 7 będzie to 11 ...

int i = n+1;
    while(1)
    {
        if(n%i != 0)
            break;
        i++;
    }
    return i;

jeśli dan n == 7, wypisuje mi 8, i nie bardzo wiem, jak to poprawić

0

zrob tablice pierwszych 20 liczb pierwszych (posortowane) pozniej jak ktos poda liczbe to przeszukuj tablice gdy wpisanaLiczba < liczbaZTablicy masz kolejna liczbe pierwsza.
(nie napisales ze musisz to liczyc)

0

A gdyby tak napisac 2 funkcje:

  1. sprawdza, czy liczba jest pierwsza
  2. petla while true oraz licznik bedacy kolejna liczba do sprawdzenia, jesli ta kolejna liczba bedzie pierwsza, robie break i ja zwracam

będzie to ok?

0

@qwd tu nie ma co poprawiać. Ten kod jest bez sensu. Potrzebujesz tu przynajmniej 2 pętle -> jedna do zwiększania potencjalnej liczby a druga to sprawdzania jej pierwszości.
Poza tym nie rozumiesz chyba warunku pierwszości. Liczba pierwsza dzieli sie tylko przez siebie samą i 1, a ty sprawdzasz tylko jedno dzielenie i na tej podstawie oceniasz pierwszośc...

0

Mysle, że rozumiem, napisałem sprawdzenie, czy jest pierwsza: http://ideone.com/lfdfUr

1
  1. A co twój kod zwróci dla wejścia 0...?
  2. Nie sądzisz, że w funkcji first lepiej użyć typu bool, skoro zwracasz tylko 1 albo 0?
  3. Warto poznać: http://pl.wikipedia.org/wiki/Sito_Eratostenesa

Poza tym jest chyba OK, więc pozostało ci tylko znaleźć jeszcze następną liczbę pierwszą ;)

0

zera nie rozpatruje, to jest C dlatego użyłem int nie bool, sito znam, chciałem zrobić na brute force :P dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1