[ eruanntion @ 03.12.2005. 11:46 ] @
Napisao sam program koji za uneti broj pronalazi odredjen prost broj! Program radi , ali me zanima da li ovo moze da se uradi na malo suptilniji nacin, ili je i ovo OK!

Evo koda:

Code:

import java.util.Scanner;

public class PronalazacProstihBrojeva 
{

    public static void main(String[] args) 
    {
        System.out.println("Koji prost broj zelite?");
        Scanner ulaz = new Scanner(System.in);
        int x = ulaz.nextInt();
        int[] niz = new int[x];

        for (int i = 0; i < x; i++) 
        {
            if (i == 0) 
            {
                niz[i] = 1;
                continue;
            }
            for (int j = i; j < Integer.MAX_VALUE; j++) 
            {
                if (jesteProst(j)) 
                {
                    niz[i] = j;
                    if (niz[i] > niz[i - 1])
                        break;
                    else
                        continue;
                }

                else
                    continue;

            }

        }
        System.out.println(x + ". prost broj je: " + niz[x - 1]);

    }

    public static boolean jesteProst(int n) 
    {

        if (n == 2)
            return true;

        if (n % 2 == 0)
            return false;

        for (int i = 3; i <= Math.sqrt(n); i += 2) 
        {
            if (n % i == 0)
                return false;

        }

        return true;

    }
    
    
}
[ Srđan Krstić @ 07.12.2005. 03:10 ] @
1. ne vidim zasto ides sa i od 0 do x, pa onda sa j od i do maxint... Idi jednostavno jednom petljom od 2 do u beskonacnost, za svaku vrednost proveri da li je taj broj prost, ako jeste, povecaj neki globalni brojac za 1, kad on postane x, stampaj tu vrednost i zavrsi

2. 1 nije prost broj ;-)

Evo tweakovanog koda:
Code:
import java.util.Scanner;

public class PronalazacProstihBrojeva 
{

    public static void main(String[] args) 
    {
        System.out.println("Koji prost broj zelite?");
        Scanner ulaz = new Scanner(System.in);
        int x = ulaz.nextInt();
        int brojac = 0;

        for (int i = 2; ; i++) 
            if (jesteProst(i)) 
                {
                    brojac++;
                    if (brojac == x)
                        break;
                }

        System.out.println(x + ". prost broj je: " + i);
    }

    public static boolean jesteProst(int n) 
    {
        if (n == 2)
            return true;
        
        if (n % 2 == 0)
            return false;

        for (int i = 3; i <= Math.sqrt(n); i += 2) 
        {
            if (n % i == 0)
                return false;
        }

        return true;
    }

}


(nisam kompajlirao kod, ali ne vidim mesta gresci ;-))

[Ovu poruku je menjao Srđan Krstić dana 07.12.2005. u 04:12 GMT+1]
[ Srđan Krstić @ 07.12.2005. 03:19 ] @
A ako vec hoces da generises sve proste brojeve manje od maxint pa da izbacis x-ti, optimalnije resenje je da koristis eratostenovo sito (podjes od svih brojeva, pa izbacis sve parne, pa sve deljive sa 3, pa sve deljive sa 5 itd....). Vrlo je trivijalno kodirati, jer kad si izbacio sve deljive sa prvih k prostih brojeva, sledeci broj koji nisi razmatrao je bas sledeci prost broj, pa izbacujes nadalje svaki koji je deljiv sa njim. plus, ako je to recimo broj a, izbacujes pocev od a^2, jer su svi manji od a^2 ako su deljivi sa a vec izbaceni...
[ opi @ 10.12.2005. 02:36 ] @
pogledaj : http://www.troubleshooters.com.../primenumbers/primenumbers.htm

[ netJunky @ 10.12.2005. 23:35 ] @
U sustini ti je najlakse da koristis prosto rekurzivne funkcije koje su jako lake a rade neverovatno brzo. Javi ako ti budu zatrebale poslacu ti.
pozz
[ AstralPro @ 20.12.2005. 01:46 ] @
Eratostenovo sito je po meni najbrzi algoritam za proste brojeve,
iskreno mrzi me sad da kucam ali kao bas treba tu sam
[ nino1977 @ 11.03.2016. 20:43 ] @
Mislim da i ovo odgovara, ali nisam posebno provjeravao. Sretno!!!


import java.util.Scanner;

public class Loop {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.out.println("Koji prost broj zelite?");
Scanner ulaz = new Scanner(System.in);

int x = ulaz.nextInt();
int brojac = 0;

for (int i = 1;i<=x ; i++) {
if(x%i==0){
brojac ++;
}
}


if(brojac==2){
System.out.println("Broj je prost " + brojac);
}
else
{
System.out.println("Broj nije prost " + brojac);
}
}
}