NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomozte začátečníkovi - třídy

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
David Kroupa
Člen
Avatar
David Kroupa:18.11.2016 17:30

Ahoj, mám tenhle program na vypočítání prvočísel, neví někdo jak udělat, aby to sečetlo všechny ty vypsaný prvočísla čísla a vypsalo jejich součet?

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Zadejte maximum: ");
        int maximum = sc.nextInt();
        boolean[] mnozina = sito(maximum);
        System.out.println("prvočísla od 2 do " +maximum);
        vypis(mnozina);
        System.out.println(mnozina.length);
    }

    static boolean[] sito(int maximum) {
        boolean[] mnozina = new boolean[maximum+1];
        for(int i=2; i<maximum; i++)
            mnozina[i]= true;
        int p = 2;
        int pmax = (int)Math.sqrt(maximum);
        do {
            for(int i=p+p; i<=maximum; i+=p)
                mnozina[i] = false; //vylučuje násobky prvočísel
            do {
                p++; //zvyšuje
            }while(!mnozina[p]);
        }while(p<=pmax);
        return mnozina;
    }

    static void vypis(boolean[] mnozina) {
        for (int i=2; i<mnozina.length; i++) {
        if(mnozina[i]) System.out.println(i);
        }
     //9592
    }

}
 
Odpovědět
18.11.2016 17:30
Avatar
David Kroupa
Člen
Avatar
David Kroupa:18.11.2016 17:35

Oprava: Vypsalo to kolik těch prvočísel dohromady je. :)

Editováno 18.11.2016 17:36
 
Nahoru Odpovědět
18.11.2016 17:35
Avatar
Odpovídá na David Kroupa
Petr Štechmüller:18.11.2016 17:54

Ahoj, v metodě vypis, kde vypisujes všechna prvočísla si udělej nějakej čítač, kterej budeš inkrementovat. Na konci ti to dá celkový počet.

Nahoru Odpovědět
18.11.2016 17:54
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
David Kroupa
Člen
Avatar
Odpovídá na Petr Štechmüller
David Kroupa:18.11.2016 17:56

mohl bys prosím naznačit jak?

 
Nahoru Odpovědět
18.11.2016 17:56
Avatar
Odpovídá na David Kroupa
Petr Štechmüller:18.11.2016 17:59
static void vypis(boolean[] mnozina) {
        int citac = 0;
        for (int i=2; i<mnozina.length; i++) {
        if(mnozina[i]) {
             citac++;
             System.out.println(i);
         }
        }
     System.out.println(citac);
    }

Tohle je ale úplně základní věc, kterou by jsi mel normálně vymyslet.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
18.11.2016 17:59
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
David Kroupa
Člen
Avatar
Odpovídá na Petr Štechmüller
David Kroupa:18.11.2016 18:09

Dík, něco podobného jsem i měl, akorát jsem blbě inicializoval ten čítač a házelo mi to chybu.

 
Nahoru Odpovědět
18.11.2016 18:09
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.