Liczba Pierwsza

PO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0
Kopiuj
 int CzyPierwsza;
            do
            {
                Console.Write("Podaj liczbę: ");
            }
            while (!int.TryParse(Console.ReadLine(), out CzyPierwsza));
            if (CzyPierwsza == 2 || CzyPierwsza == 1)
            {
                Console.WriteLine("Liczba NIE JEST liczbą pierwszą.");
            }
            else
            {
                for (int p = 2; p < CzyPierwsza; p++)
                {
                    if (CzyPierwsza % p == 0)
                    {
                        Console.WriteLine("Liczba NIE JEST liczbą pierwszą.");
                        break;
                    }
                }
                Console.WriteLine("JEST");
            }

Co zrobić żeby komunikat JEST nie wyświetlał się zawsze?

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Przenieś to do metody zwracającej bool, wtedy zamiast break; robisz return false;
2 to też liczba pierwsza.

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
0

Przerzuć to do funkcji i return zamiast break.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
2

Nazwy zmiennych zaczynamy małą literą, nie ma sensu aby nazwa zmiennej zawierała słowo czy, jeśli nie jest typu bool.

PP
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 33
0

wrzuć

Kopiuj
 Console.WriteLine("JEST");

do

Kopiuj
   
                for (int p = 2; p < CzyPierwsza; p++)
                {
                    if (CzyPierwsza % p == 0)
                    {
                        Console.WriteLine("Liczba NIE JEST liczbą pierwszą.");
                        break;
                    }
                    Console.WriteLine("JEST");
                }
                    
bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast

Kopiuj
for (int p = 2; p < CzyPierwsza; p++)

daj
double bound = Math.Sqrt(CzyPierwsza);
for (int p = 2; p <= bound; p++)

Kopiuj
To nie poprawi wyświetlania, ale znacznie przyspieszy program.

Pierwszy `if` powinien wyglądać tak:
```csharp
            if (CzyPierwsza <= 1)
            {
                Console.WriteLine("Liczba NIE JEST liczbą pierwszą.");
            }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.