• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Algorytm liczby pierwsze / Sprawdzenie / Java / Programowanie

0 głosów
1,710 wizyt
pytanie zadane 2 listopada 2020 w Java przez Patryk2001 Początkujący (470 p.)

Witam, napisałem algorytm , który ma sprawdzić czy dana liczba jest liczbą pierwszą. Nie wiem czy mój algorytm jest poprawny więc proszę Państwa o sprawdzenie go ;). Pozdrawiam.

 

package zadanie2.pkg9;

import java.util.Scanner;

public class Zadanie29 {

    
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       
       int liczba = sc.nextInt();
       int licznik = 0;
       
       for(int i = 1; i <= liczba; i++)
       {
           if(liczba % i == 0)
           {
               licznik += 1;
           }
       }
       
       if(licznik == 2)
       {
           System.out.println("Liczba " + liczba + " jest liczba pierwsza");
       }
       else
       {
           System.out.println("Liczba " + liczba + " nie jest liczba pierwsza");
       }
        
    }
    
}

 

komentarz 2 listopada 2020 przez tkz Nałogowiec (42,040 p.)

Dwie rzeczy, które powinny poprawić wydajność. Pierwsza: przeżuć sprawdzanie do osobnej funkcji, poco masz iterować po całym zakresie, skoro liczba odpadanie na początku?
Druga kwestia, to sprawdzanie do pierwiastka kwadratowego liczby, 

public class HelloWorld{
    static boolean isPrime(int number){
        if(number<3){
            return false;
        }
        for(int i = 2; i <= Math.sqrt(number); ++i){
            if(number%i==0){
                return false;
            }
        }
        return true;
    }
     public static void main(String []args){
        System.out.println(isPrime(7));
        System.out.println(isPrime(5923 ));
        System.out.println(isPrime(12343 ));
        System.out.println(isPrime(6619 ));
     }
}

 

komentarz 3 listopada 2020 przez Bartek12 Mądrala (5,510 p.)
zgadzam się w 90% ale co w sprawie 2, która jest mniejsza niż 3, ale jest liczbą pierwszą
komentarz 3 listopada 2020 przez tkz Nałogowiec (42,040 p.)
Moja nieuwaga. W pierwszym warunku zamienić 3 na 2.

1 odpowiedź

0 głosów
odpowiedź 2 listopada 2020 przez Bartek12 Mądrala (5,510 p.)
Algorytm wygląda dobrze, ale nie rozpoznaje 1 jako liczby pierwszej.
komentarz 2 listopada 2020 przez Patryk2001 Początkujący (470 p.)
A czy 1 jest liczbą pierwszą ?
komentarz 2 listopada 2020 przez reaktywny Nałogowiec (46,230 p.)
edycja 2 listopada 2020 przez reaktywny
Jest pierwszy błąd:

if(licznik == 2)

A co z liczbami podzielnymi przez kilka liczb
komentarz 2 listopada 2020 przez Patryk2001 Początkujący (470 p.)
liczby podzielne przez kilka liczb nie są liczbami pierwszymi, dobrze mówię ?
komentarz 2 listopada 2020 przez reaktywny Nałogowiec (46,230 p.)
No nie są, teraz załapałem jak to sobie wymyśliłeś, ja bym w takim wypadku zrobił ciut inaczej, tzn. wychodził z pętli jak znajdziesz już trzy podzielniki liczby, bo wtedy nie ma sensu dalej szukać kolejnych. A przy dużych liczbach może to mieć spore znaczenie!

To ( int i = 1;  ) też można zmienić, bo każda liczba jest podzielna przez 1.

Ta ostatnia uwaga to drobnostka, ale pytasz chyba co usprawnić w programie?
komentarz 3 listopada 2020 przez Bartek12 Mądrala (5,510 p.)
a no racja, zgadzam się. A jak algorytm radzi sobie z liczbą 0?

Podobne pytania

0 głosów
0 odpowiedzi 1,098 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Pieko Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 19,368 wizyt
pytanie zadane 7 września 2017 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 707 wizyt
pytanie zadane 16 marca 2017 w C# przez criser Nowicjusz (210 p.)

93,605 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...