• 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

Object Storage Arubacloud
0 głosów
1,111 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,990 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,990 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 693 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Pieko Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 17,481 wizyt
pytanie zadane 7 września 2017 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 522 wizyt
pytanie zadane 16 marca 2017 w C# przez criser Nowicjusz (210 p.)

92,555 zapytań

141,400 odpowiedzi

319,537 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...