• 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

VPS Starter Arubacloud
0 głosów
1,088 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,000 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,000 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 (40,650 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 (40,650 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 684 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Pieko Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 17,441 wizyt
pytanie zadane 7 września 2017 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 510 wizyt
pytanie zadane 16 marca 2017 w C# przez criser Nowicjusz (210 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...