Prvočísla - JAVA (cyklus while,for) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Prvočísla - JAVA (cyklus while,for) – Java – Fórum – Programujte.comPrvočísla - JAVA (cyklus while,for) – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Georgiy Pastukhov
~ Anonymní uživatel
1 příspěvek
8. 4. 2013   #1
-
0
-

Dobrý den.

Dostal jsem ve škole úkol a nevím co s tím.

Mám vytvořit program (v programovacím jazyce JAVA), na začátku kterého zadáme číslo a program zjistí zda-li dané číslo je a nebo není prvočíslo.

Daný program by měl být vytvořen za pomocí cyklu while a nebo for.

Předem děkuji za odpověď. 

Nahlásit jako SPAM
IP: 89.102.169.–
Reklama
Reklama
KIIV+42
God of flame
8. 4. 2013   #2
-
0
-

tak zacnes tim, jak vlastne poznas, ze je cislo prvocislo?

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Flowy0
Věrný člen
8. 4. 2013   #3
-
0
-

zaujimave to tlacidlo "odpovedet" v tomto pripade straca zmysel kedze nebola polozena otazka ... v podstate je rovnako zbytocny aj thread ...

Nahlásit jako SPAM
IP: 178.41.163.–
https://github.com/Flowy
Jiri Prajzner
~ Anonymní uživatel
23 příspěvků
9. 4. 2013   #4
-
0
-

sice se z toho asi nic nenaucis, ale tady je naivni implementace:

package primenumber;

/**
 *
 * @author Jiri Prajzner
 */
public class PrimeNumber {

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    if ((Integer.parseInt(args[0].trim()) % 2) != 0) {
      System.out.println(args[0] +" is a prime number.");
    } else {
      System.out.println("args[0] +" is not a prime number");
    }
  }
}

bylo by vhodne kdyby jsi jako bonus napred zjistil v jakem oboru je tohle reseni platne a podle toho validoval argumenty. pokud se ti chce, implementuj lepsi algoritmus pro nalezeni prvocisla, na interneu je toho spousta.

Nahlásit jako SPAM
IP: 94.112.88.–
crazy
~ Moderátor
+10
Grafoman
9. 4. 2013   #5
-
0
-

#4 Jiri Prajzner
toto ti akorát rozliší, zda je číslo liché :)

Nahlásit jako SPAM
IP: 2001:718:7:204:2062:1d83:...–
All you need is vision and time.
Jiri Prajzner
~ Anonymní uživatel
23 příspěvků
9. 4. 2013   #6
-
0
-

#5 crazy
spravne :)

Nahlásit jako SPAM
IP: 94.112.88.–
crazy
~ Moderátor
+10
Grafoman
9. 4. 2013   #7
-
0
-

takže si myslíte, že když je číslo liché, tak se jedná o prvočíslo?

Nahlásit jako SPAM
IP: 195.113.242.–
All you need is vision and time.
KIIV+42
God of flame
9. 4. 2013   #8
-
+2
-
Zajímavé

#7 crazy
tim "naivni" bude asi mysleno "uplne blba"

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
liborb
~ Redaktor
+18
Guru
10. 4. 2013   #9
-
0
-

Poslední příklad v tomto článku je na prvočísla, řešeno pomocí cyklu for - stačí těch pár příkazů přepsat :).

Nahlásit jako SPAM
IP: 188.75.135.–
FakeGod
~ Anonymní uživatel
1 příspěvek
8. 11. 2013   #10
-
0
-

   

for (int j = 2; j <= (int) Math.sqrt(n); j++) {
            if (n % j == 0) {
                isPrime = false;
                break;
            } else {
                isPrime = true;
            }
        }
        if (isPrime) {
            System.out.println(n + " je prvočíslo");
        } else {
            System.out.println(n + " neni prvočíslo");

Nahlásit jako SPAM
IP: 2001:718:1c01:154:6839:70...–
sleepy
~ Anonymní uživatel
422 příspěvků
13. 11. 2013   #11
-
0
-

Pozri si nieco o malej Fermatovej vete. Plati ze ak a jelubovolne cele (nezaporne) cislo a p je prvocislo => a^(p-1) == 1 (mod p). Cize zapis pre javistu Math.pow(a, (p-1))%p == 1. Metoda podobna tejto sa v dnesnej dobe pouziva v RSA. Pozor na ten znak implikacie, to neplati opacne, ze ak ti z najkych takto zadanych cisel vyde 1 tak p je prvocislo. Prikl. a=1; p=4; 1^3 =1; 1%4=1 ale vieme ze p urcite nieje prvocislo. Cize je vyhodne to vypocitat pre viacero roznych a. A aby to fungovalo ako tak effektivne, je dobre za kazdym umocnennim urobit modulo (toto cele ma nieco docinenia z cyklickymy konecnymi grupami). Takto by som to riesil ja:

public int powMod(int a, int p) {
	int out = 1;
	int exp = p-1;
	for(int k=0; k<32;k ++) {
		if (exp %2 ==1 ) {
			out = (out * a)%p;
		}
		exp= exp>>1; // exp/2
		a = (a*a)%p; // umocnenie priamo z modulovanim
				// inak by si dostal velke cisla
	}
	return out;
}

Inak som si vsimol ze ak zajdes do BigInteger classu taketo veci tam priamo su. A je tam aj metoda isProbablyPrime, ktora bude zrejem fungovat na tomto principe. Dokonca je tam aj metoda powMod() co som do pisania tejto metody nevedel :D.

Nahlásit jako SPAM
IP: 147.175.177.–
sleepy
~ Anonymní uživatel
422 příspěvků
13. 11. 2013   #12
-
0
-

#11 sleepy
pre ludi ktory by sa zase chceli hadat o konvergencii a divergencii, napisal som si to v pythone , funguje to. Diverkovat to na konecnom pocte nasobeni nemoze ak, jedno z tych cisel samo nieje nekonecno resp. lim k->inf. To ze robime z konecnymi poctami bytov neznamena ze nieco nekonverguje. A za tretie je tam modulo ktore to za kazdym hodi na cislo mensie ako p!

Nahlásit jako SPAM
IP: 147.175.177.–
sleepy
~ Anonymní uživatel
422 příspěvků
13. 11. 2013   #13
-
0
-

a etse jedna vec ak a > p > 2^16 je dobre spravit: a = ((a%p)*(a%p))%p;

Nahlásit jako SPAM
IP: 147.175.177.–
sleepy
~ Anonymní uživatel
422 příspěvků
13. 11. 2013   #14
-
+1
-
Zajímavé
Nahlásit jako SPAM
IP: 147.175.177.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 49 hostů

Podobná vlákna

Prvocisla — založil myky

Prvocisla v intervalu — založil zemlra

Hledani prvocisla — založil loleklel

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý