Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Provera da li sma skontao kako radi program koji proverava da li je prost broj

[es] :: Java :: Provera da li sma skontao kako radi program koji proverava da li je prost broj

[ Pregleda: 4990 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Provera da li sma skontao kako radi program koji proverava da li je prost broj16.11.2013. u 23:18 - pre 126 meseci
Ovako evo ga jedan program iz knjige koji proverava da li je broj prost broj, ja sam ovde izkomentarisao kod da bi ga ja mogao razumeti, iznecu vam moje misljenje kako sam
ja skontao da ovaj program radi, a vi me ispravite ako gresim. :)

Code:

// Ispituje da li je prost broj
public class ProstBroj 
{
    public static void main(String args[])
    {
        // Prost broj je broj veci od 1 i on je broj koji je deljiv samo sa 1 i sa samim sobom.
        // ,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113
        int broj;
        boolean prost;
        
        broj =14; // Dodeljuje se promenljivoj broj vrednost 12;
        
        if(broj<2) // Ako je promenljiva broj manja od 2 
            prost=false; //Nema mogucnost da bude prost
        else
            prost=true; // Ima mogucnost da bude prost
        for(int i=2; i <=broj/i; i++) // petlja pocinje od 2, true je ako je i manji ili jednak broju 14 i ako je i deljiv sa brojem 14
        {// Ako je uslov false, petlja for se ne ispunjava, a ako je true petlja for se ispunjava.
            if ((broj%i) ==0)
            {
                prost =false;
                break;
            }
        }
        if(prost) System.out.println("Prost broj");
        else System.out.println("Nije prost broj");
    }
}


U pocetku programa sam sam sam sebi u komentaru objasnio sta je uopste prost broj i dao sebi nekoliko primera.
Promenljivoj int je dat broj 14, u if se proverava da li je promenljiva broj manja od 2, ako je manje daje rezultat false
jer prost broj ne moze da bude manji od dva a ako je veci daje true i prelazi se na for petlju.
U for petlji se promenljivoj int dodaje vrednost 2, zatim i se poredi sa promenljivom broj i gleda se onda da li je promenljiva i manja ili jednaka promenljivoj broj i da li je
moguce podeliti promenljivu broj sa i, ako jeste petlja daje true i izvrsava se. Onda se prelazi na if if proverava da li je ostatak pri deljenju izmedju promenljive broj i promenljive i jednak 0, ako je jednak nuli onda je false, (jer je prost broj deljiv samo sa sobom i sa nijednim drugim brojem). onda kada se utvrdilo da promenljiva broj nije prost broj izlazi se iz for petlje pomocu break ? (to u vezi break nisam siguran jer to jos nisam radio mada msm da to sluzi za to za nasilni prekid petlje)
Sad me ovaj deo zbunjujem, znam da sada ovaj boolean ima false jer je utvrdjeno da 14 nije prost broj, ali zar ne bi trebala vrednost da se izgubi kad izadje iz if petlje ?
Tj to je onaj opseg vazenja petlje ? Nadam se da sam ovo sve ukapirao sem ovoga na kraju ? :)


 
Odgovor na temu

GORSHTAK
Ivan Matić

Član broj: 136182
Poruke: 285
*.adsl.verat.net.



+5 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj17.11.2013. u 16:40 - pre 126 meseci
Ovako, u svom pomoćnom komentaru si zaboravio da navedeš da je i 2 prost broj :D ali to uopšte nije bitno za kod...
Deo što te zbunjuje:
kada je:
Code:

boolean prost = true;
if (neki_uslov) {
   prost = false;
}


onda prost ne gubi vrednost jer je deklarisan van if-a

ali:

Code:

if (neki_uslov) {
   boolean prost = true;
   prost = false;
}


u tom slučaju prost se gubi i ne može se koristiti izvan {}
možeš kasnije ponovo deklarisati prost, ali to uopšte nije ista vrednost koju si koristio...

sad, da li si stvarno razumeo zadatak, to samo ti možeš da znaš, a to možeš proveriti tako što ćeš uraditi zadatak bez gledanja u knjigu.

imaš jedan zbun u komentarima (petlja pocinje od 2, true je ako je i manji ili jednak broju 14 i ako je i deljiv sa brojem 14), daću ti kao domaći zadatak za razmišnjanje:

zašto petlja glasi:
for(int i=2; i <=broj/i; i++)

a ne:
for(int i=2; i <=broj; i++) // ova varijanta odgovara kolko tolko tvom komentaru, nije tačna

ili:
for(int i=2; i <broj; i++) // i ovo je tačna varijanta, ali razmisli zašto nije dobra



Toliko o mom kenjanju,
slobodno pitaj kad se sledeći put zabaguješ ;)
 
Odgovor na temu

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj18.11.2013. u 09:56 - pre 126 meseci
Evo vec vise od sat vremena razmisljam i mislim da sam blizu resenja, samo nikako ne mogu da skontam jedan deo iz petlje
i <=broj/i;

Ovaj deo me zbunjuje broj/i; oce li on dati true ako je broj deljiv sa i bez ostatka ?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj18.11.2013. u 10:26 - pre 126 meseci
Nema veze sa programiranjem, ima sa matematikom.

Kada proveravaš da li je broj prost, tražiš prvi prost broj sa kojim je možda deljiv, pa ako je deljiv, onda nije prost.
Pitanje koje ti je gorštak postavio je: koji je najveći prost broj sa kojim treba da proveriš deljivost, da bi odlučio da je broj prost. Odgovor je .

U najgorem slučaju za proveru, broj koji testiraš je proizvod dva ista prosta broja N=k*k. U tom slučaju .
U svim ostalim slučajevima, prvi prost broj koji je delilac broja N je strogo manji od korena iz N.

Proveri, recimo 17*17=289. Prvi prost broj sa kojim je 289 deljiv je 17 i on je upravo jednak 289/17, pa će zato u for petlji biti tačno i<=289/i za i=17 (pošto je 17<=289/17).
 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 216
*.teol.net.



+3 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj18.11.2013. u 13:59 - pre 126 meseci
skroz mi je konfuzan ovaj tvoj kod..

pogotovu ovaj početak for petlje for(int i=2; i <=broj/i; i++);

u svakom prolazu se i uvećava za 1 (u prvom prolazu je 2<=14/2, u drugom 3<=14/3, u trećem 4<=14/4...) što baš i ne kontam zašto tako radiš..

ja bih išao ovakvom logikom

for(int i=2; i<broj/2; i++) (postavio sam broj/2 jer nema svrhe da se provjerava da li je broj djeljiv sa brojem koji je veći od njegove polovine 14/7, jer je besmisleno da se provjerava 14/8, 14/9, 14/10...)

tako da bi kod bio nešto ovako:

Code:

for(int i=2; i<broj/2; i++)
if (broj%i=0){
                prost =false;
                break;
}

 
Odgovor na temu

miljan9602
Nista

Član broj: 306356
Poruke: 98
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj19.11.2013. u 00:17 - pre 126 meseci
Postavio sam pitanje na stackoverflow evo Link

Tu sam dobio odgovore da to moze da se mnogo jednostavnije napise neki su cak rekli da je i kod los, a neki rekli da bacim knjigu iz koje ucim.
Ipak resenje sam nasao ovde u Erastostenovo sito mada meni je jasno kako ovo funkcionise ali mislim da jos treba da vezbam programiranje da bi ovo pretvorio u kod :)
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.teol.net.



+62 Profil

icon Re: Provera da li sma skontao kako radi program koji proverava da li je prost broj19.11.2013. u 10:23 - pre 126 meseci
bloker, procitaj post iznad tvog, onaj deo o korenu od 'broj' (iliti broj^(1/2)) ;)

Pozz

P.S. miljan9602, to o bacanju knjige je i meni prvo palo na pamet :)
 
Odgovor na temu

[es] :: Java :: Provera da li sma skontao kako radi program koji proverava da li je prost broj

[ Pregleda: 4990 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.