JAVA - Eratostenovo síto - hledání prvočísel

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Dark100
Začátečník
Začátečník
Uživatelský avatar
Registrován: 31. pro 2003
Bydliště: Nový Jičín
Kontaktovat uživatele:

JAVA - Eratostenovo síto - hledání prvočísel

Příspěvek od Dark100 »

Pěkně prosím :), nezvládl by někdo naprogramovat v JAVĚ Eratostenovo síto - hledání prvočísel, prý je to jednoduché, ale na mě to je moc :)

Vysvětlení co to Eratostenovo síto je
http://paashi.wz.cz/prog_eratostenes.htm

Chápu myšlenku toho síta, ale nechápu jak to naprogramovat :(
i7 12700F|ASUS TUF GAMING B660-PLUS|Kingston Fury Beast DIMM DDR4 32GB 3200MHz|Gainward RTX 5080 Phoenix
Drom
Začátečník
Začátečník
Uživatelský avatar
Registrován: 18. zář 2005
Bydliště: Kdyne
Kontaktovat uživatele:

Re: JAVA - Eratostenovo síto - hledání prvočísel

Příspěvek od Drom »

Dark100 píše:Pěkně prosím :), nezvládl by někdo naprogramovat v JAVĚ Eratostenovo síto - hledání prvočísel, prý je to jednoduché, ale na mě to je moc :)

Vysvětlení co to Eratostenovo síto je
http://paashi.wz.cz/prog_eratostenes.htm

Chápu myšlenku toho síta, ale nechápu jak to naprogramovat :(
Nechapu, vzdyt je na ty strance reseni, akorat neni v jave... To je tak tezky to prepsat do javy?
Dark100
Začátečník
Začátečník
Uživatelský avatar
Registrován: 31. pro 2003
Bydliště: Nový Jičín
Kontaktovat uživatele:

Příspěvek od Dark100 »

No právě že je :) , zkusím na to pořádně přes víkend sednout ale moc si nevěřím :)
i7 12700F|ASUS TUF GAMING B660-PLUS|Kingston Fury Beast DIMM DDR4 32GB 3200MHz|Gainward RTX 5080 Phoenix
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

tak jak jsi dopadl o vikendu,zvladl jsi to?
jestli chces pomoc,tak se ozvi,uz jsem to jednou delal
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
xBl4d3x
Nováček
Nováček
Registrován: 29. lis 2005

re

Příspěvek od xBl4d3x »

no, když víš, jak to funguje, tak to snad neni problém vyrobit, ne? Vytvoříš bitový pole (typ bool) o velikosti rovnající se maximu, ze kterého chceš prvočísla hledat. Nastavíš všechny prvky pole na TRUE (= "je prvočíslo), nastavíš pole[0] a pole[1] na FALSE (0 a 1 nejsou prvočísla) a potom pomocí FOR cyklu procházíš pole (tj. od pole[2] a dál), pokud je daný prvek TRUE, pustíš druhý FOR cyklus, který nastaví všechny násobky daného indexu na FALSE ... takhle projdeš celé pole a všechny prvky, které budou mít TRUE jsou prvočísla. Zkrátka index v tom bitovym poli reprezentuje číslo.

Příklad: (sice jsem v Javě dělal naposled asi před rokem, ale na tohle neni nic xtra potřeba)

int delka = 1000; // maximum
bool pole[delka]; // nove pole
for(int a =0; a < delka; a++){ pole[a] = true; } // naplneni pole TRUE
pole[0] = false; pole[1] = false;
for(int a = 2; a < delka; a++) // pruchod pole od dvojky
{
/*kdyz je pole[a] aktivni (= a je prvocislo), vypni vsechny jeho nasobky*/
if(pole[a])
{
for(int b = 2*a; b < delka; b+=a)
{
pole = false;
}
}
}
// ted vsechny prvky pole, ktere jsou true, jsou prvocisla. Staci projit
// smyckou a vypsat nebo cokoli s tim chces udelat
Intel Core2 E6400 @ 3600 MHz (450 MHz FSB , 1,48V),
Gigabyte GA-965P-DQ6,
2x512 MB Corsair XMS2 @ 900 MHz ( 3-4-3-8 ), 2x250 GB Hitachi SATA2 RAID-0,
Gigabyte 7900GT @ 680/940 MHz (1,45V vcore)
Odpovědět

Zpět na „Programování a web“