Odpowiedzi

2010-01-17T20:18:02+01:00
Program działa tak:
w pętli nieskończonej wczytuje liczby od użytkownika
jeżeli użytkownik poda liczbę 0, to program się kończy
jeżeli poda inną liczbę, to program sprawdza czy ta liczba jest pierwsza i jeśli jest, to wypisuje komunikat

Sprawdzanie, czy liczba jest pierwsza wygląda tak:
jesli liczba jest mniejsza od 2, to nie jest pierwsza
jeśli liczba jest 2 lub 3, to jest pierwsza
dalej jeśli liczba jest parzysta, to nie jest pierwsza (jedyny przypadek liczby parzystej pierwszej już został wcześniej wyłapany)
Dalej w pętli jest sprawdzane, czy liczba dzieli się przez kolejne liczby nieparzyste... jeśli przez którąś się dzieli, to nie jest pierwsza
Jeśli sprawdzanie przejdzie całą pętlę, to znaczy, że liczba jest pierwsza.
Poniżej program, nie rysuję diagramów, bo nie mam za bardzo jak, ale wydaje mi się, że możesz je sobie sam wygenerować z mojego opisu oraz z kodu programu:


#include <iostream>
using namespace std;

bool pierwsza(int n) {
if (n<2) return false;
if (n<4) return true;
if (n%2==0) return false;
for (int i=3; i<n; i+=2)
if (n%i==0) return false;
return true;
}

int main() {
int n;
do {
cin >> n;
if (n==0) break;
if (pierwsza(n))
cout << "Liczba " << n << " jest pierwsza." << endl;
} while(true);
return 0;
}