abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 09:44 | Pozvánky

Již tento víkend 4. a 5. března proběhne v Praze na Karlově náměstí 13 konference InstallFest 2017. Na programu je celá řada zajímavých přednášek a workshopů. Jaké linuxové distribuce používají návštěvníci chystající se na konferenci? Odpověď na Twitteru.

Ladislav Hagara | Komentářů: 1
dnes 08:44 | Nová verze

Minulý týden byla vydána verze 8.0.0 minimalistické linuxové distribuce (JeOS, Just enough Operating System) pro Kodi (dříve XBMC) a multimediálního centra LibreELEC (Libre Embedded Linux Entertainment Center). Jedná se o fork linuxové distribuce OpenELEC (Open Embedded Linux Entertainment Center). LibreELEC 8.0.0 přichází s Kodi 17.0 Krypton.

Ladislav Hagara | Komentářů: 0
včera 12:30 | IT novinky

Nadace Raspberry Pi představila (YouTube) Raspberry Pi Zero W. Jedná se o vylepšenou verzi miniaturního počítače Raspberry Pi Zero s Wi-Fi a Bluetooth. Koupit jej lze za 10 dolarů. V prodeji je také oficiální krabička.

Ladislav Hagara | Komentářů: 14
včera 00:55 | Komunita

Pocket (dříve Read It Later) (Wikipedie) je oblíbená služba umožňující uložit si článek z webu na později. V červnu 2015 s vydáním Firefoxu 38.0.5 se do té doby doplněk Pocket stal integrovanou součásti Firefoxu, a to i přes odpor celé řady uživatelů tohoto webového prohlížeče. Mozilla po měsících ustoupila a z integrované součásti se stal opět doplněk. Včera bylo oznámeno, že Mozilla službu Pocket kupila (Mozilla Blog, Pocket Blog).

Ladislav Hagara | Komentářů: 20
27.2. 23:55 | Pozvánky

Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1. 3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti.

… více »
xkucf03 | Komentářů: 0
27.2. 18:30 | Komunita

Jednodeskový počítač Raspberry Pi slaví již 5 let. Prodej byl spuštěn 29. února 2012. O víkendu proběhne v Cambridgi velká narozeninová party. Na YouTube bylo při této příležitosti zveřejněno video představující zajímavé projekty postavené na Raspberry Pi.

Ladislav Hagara | Komentářů: 3
27.2. 18:30 | Nová verze

Byla vydána verze 2017.1.1 svobodného multiplatformního leteckého simulátoru FlightGear. Kódový název a výchozí letiště této verze je Bergen. Přehled novinek v Changelogu.

Ladislav Hagara | Komentářů: 0
27.2. 10:50 | Zajímavý software

Mozilla.cz informuje o dvou nových experimentálních funkcích v programu Firefox Test Pilot (zprávička). Snooze Tabs slouží k odkládání panelů na později. Pokud vám někdo pošle odkaz, ale vy nemáte čas si stránku hned přečíst, můžete si naplánovat otevření panelu na později. Stačí kliknout na tlačítko a vybrat, kdy chcete panel otevřít. Firefox panel schová a ve vybraný čas znovu otevře. Pulse umožňuje ohodnotit, jak dobře stránka funguje, např. jak rychle se ve Firefoxu načetla. Podle nasbíraných hodnocení pak bude Mozilla prohlížeč ladit.

Ladislav Hagara | Komentářů: 10
27.2. 02:00 | IT novinky

V Barceloně probíhá veletrh Mobile World Congress 2017. Nokia na něm například představila (360° video na YouTube) novou Nokii 3310 (YouTube). BlackBerry představilo BlackBerry KEYone (YouTube) s QWERTY klávesnicí. LG představilo LG G6 (YouTube). Huawei HUAWEI P10 a P10 Plus. Samsung představil tablet Galaxy Tab S3.

Ladislav Hagara | Komentářů: 3
26.2. 14:00 | Nová verze

Komunita kolem Linuxu From Scratch (LFS) vydala Linux Linux From Scratch 8.0 a Linux From Scratch 8.0 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází především s Glibc 2.25 a GCC 6.3.0. Současně bylo oznámeno vydání verze 8.0 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 743 hlasů
 Komentářů: 72, poslední dnes 11:16
    Rozcestník

    Dotaz: prvočísla v php

    24.2.2005 20:21 psychosoma | skóre: 17
    prvočísla v php
    Přečteno: 2140×
    Chtěl bych se zeptat , jestli by mě někdo nemohl pomoc sestavit program v php , který by mi spočítal všechna prvočísla do 1 milionu . Jsem začátečník a nějak mě to neleze do hlavy . Děkuji za pomoc Pavel

    Odpovědi

    24.2.2005 20:30 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: prvočísla v php
    Milion 32 bitových čísel jsou ani ne 4 mega paměti (plus nějaká režie PHP), takže klidně erastosenovým sítem: škrtout nulu a jedničku a pak škrtat dvou- a více-násobky čísel, která ještě nejsou škrtnutá (tj. násobky dvojky počínaje čtyřkou, trojky počínaje šestkou /která už je sktrnutá/ a tak dále). Co zbyde, to jsou prvočísla.

    Ale klidně si přečtu popis nějakéhu super vytuněného algoritmu na hledání prvočísel < 1e6 :-)
    24.2.2005 20:34 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: prvočísla v php
    Plácám, ani ty 4 MB nejsou potřeba, protože stačí ukládat jen bitík (no... bajtík), jestli je to číslo škrtnuté nebo ne.

    PS: google už bude vědět
    24.2.2005 20:35 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    To máš jako domácí úkol nebo co?

    0. N = 1000000

    1. Alokuj pole p, velké N a vyplň nulami; p[0] = 1, p[1] = 1

    2. i = 0

    3. Najdi v poli p další nulu (od posice i+1), její posice je nová hodnota i

    4. Pokud i >= sqrt(N), skonči

    5. Pro všechny k od 2*i do N-1 s krokem i nastav p[k] = 1

    6. Pokračuj od 3.

    Až to skončí, tak kde jsou v p nuly, to jsou prvočísla.

    V PHP to psát nebudu, měl sis vybrat normálnější jazyk.
    24.2.2005 21:25 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Hmm, v PHP me to nejak nebavi... :-)
    #include <stdio.h>
    
    int main(void)
    {
        int i=0,j=0,l=0;
    
        printf("1 je prvocislo\n");
        printf("2 je prvocislo\n");
    
        for (i=3; i < 1000000; i=i+2)
        {
            l = 0;
    
            for (j=2; j<i; j++)
            {
                if (i % j == 0)
                {
                    l++;
                    break;
                }
            }
    
            if (l == 0)
            {
                printf("%d je prvocislo\n", i);
            }
        }
    
        return 0;
    }
    
    24.2.2005 21:37 Stehlo | skóre: 17
    Rozbalit Rozbalit vše Re: prvočísla v php
    zbytocne vela rata ... ja by som upravil este toto:
    for (j=2; j<(i/2); j++)

    24.2.2005 22:34 Jack | skóre: 21 | blog: Od_vseho_trochu | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    Tohle tusim taky. Dlouho jsem se tim nezabyval, ale tusim, ze staci do odmocniny cisla. Takze sqrt(i);.
    24.2.2005 23:04 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Což je ale pořád dost neefektivní ve srovnání s Eratosthenovým sítem.
    24.2.2005 23:18 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: prvočísla v php
    Aha, tak tahle se ten pán jmenoval... Ale komolí to kdekdo, Google vrací řádově stejně výsledků i na zkomoleniny :-)
    24.2.2005 23:28 michal
    Rozbalit Rozbalit vše Re: prvočísla v php
    Pokud sqrt(i) tak nema tam musi byt podminka <= v tom cyklu. Jinak by vyslo treba 25 (a obecne prvocislo^2) jako prvocislo protoze delitelnost 5 bychom uz nezkoumali.
    24.2.2005 21:48 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Nechci vyvolávat flamewar ;-) ale jedna není prvočíslo.
    24.2.2005 22:41 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    No a ja si zase myslim, ze je... Ale muzes vytvorit patch. :-D
    24.2.2005 23:13 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Definovat si každý může, co chce, jak chce. Ale definovat prvočíslo, aby vyhovovala jednička, je nepraktické.

    Buď ji povolím v prvočíselých rozkladech, které se tím stanou nejednoznačnými, což značně (byť formálně) zkomplikuje tvrzení a důkazy, do kterých se budou muset cpát výjimky pro jedničku; nebo nepovolím, ale proč jsem ho tedy jako prvočíslo definoval?
    24.2.2005 23:16 Stehlo | skóre: 17
    Rozbalit Rozbalit vše Re: prvočísla v php
    V matematike je prvocislo kazde prirodzene cislo od 2 viac, ktore je delitelne len 1-kou a samo sebou.
    tod definice
    24.2.2005 23:22 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ano, to je tvoje definice. :-)
    24.2.2005 23:30 Michal
    Rozbalit Rozbalit vše Re: prvočísla v php

    To neni jeho definice ale obecne prijimana definice :)

    http://en.wikipedia.org/wiki/Prime_numbers

    In mathematics, a prime number, or prime for short, is a natural number greater than one and whose only distinct positive divisors are 1 and itself.

    note that 1 has only one divisor; a factor of 1 is of no interest in any product.
    24.2.2005 23:32 michal
    Rozbalit Rozbalit vše Re: prvočísla v php
    ee pastnul jsem tam neco jineho...
    The numbers 0 and 1 are neither prime nor composite
    24.2.2005 23:34 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Wikipedii bych asi jako autoritativní zdroj nelinkoval, raději Mathworld: Prime Number.
    24.2.2005 23:42 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ano, ja tady muzu jmenovat jeste treba dalsi dve definice:

    - Prvocislo je prirozene cislo, ktere ma prave dva celociselne delitele. (Tedy 1 tam nepatri)

    - Prvocislo je prirozene cislo, ktere je beze zbytku delitelne 1 a samo sebou. (Patri tam 1? Jak se definuje AND?)

    Nicmene myslim, ze to tazatele vubec nezajima, vazne nechapu, proc tady tyhle nesmyslne hadky o jednicku dal rozvijet.

    24.2.2005 23:50 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Zjevně nejsi matematik. Pojmy se nedefinují jen tak. Definují se pro konceptuální zpřehlednění, pro přechod na jinou úroveň představ. Celou matematiku bychom vybudovali i s primitivními pojmy, ale to bychom museli být stroje. Tudíž otázka je, která definice prvočísla je užitečná, a to je jednoznačně ta, která jedničku nezahrnuje. Přeformuluj si pár důkazů s jedničkou jako prvočíslem a ono tě to přejde...
    24.2.2005 23:57 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Koncim. Hadky o jednicku me prestaly bavit uz na gymplu, byly naprosto stejne zbytecne a bezvysledne stejne jako tahle... At si tazatel preformuluje svuj dotaz tak, aby bylo jednoznacne patrne, jestli jednicku za prvocislo povazuje nebo ne, ja mu do toho nehodlam kecat. :-)
    25.2.2005 00:02 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Škoda, že ji považuješ za bezvýslednou, když se ti několik (tedy alespoň dva) lidí pokusilo vysvětlit, že definice matematických pojmů musejí mít smysl -- podle něho se poznají dobré definice.
    14.4.2005 15:30 Josef Dřevojan
    Rozbalit Rozbalit vše Re: prvočísla v php
    nevite jake je největší prvo číslo?
    14.4.2005 15:37 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Žádné, je-li prvo číslo totéž co prvočíslo. Prvočísel je neknonečně mnoho (bavíme se o prvnočíslech množině N?), je to známo už přes 2000 let a triviální důkaz ti bez problémů najde Google.
    24.2.2005 23:54 Michal Kubeček
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ve skutečnosti mají prvočísla čtyři celočíselné dělitele, aspoň v nejčastěji používaném okruhu celých čísel. V gaussovských číslech je jich třeba osm… Navíc vaše definice nedefinují prvočíslo, ale ireducibilní prvek. Pokud mne paměť neklame, prvočíslo se definuje prvek, který není jednotkou (nedělí jednotkový prvek) a pro který platí p|ab ⇒ (p|a ∨ p|b). Ano, v celých číslech je to totéž, ale obecně ne.
    24.2.2005 23:58 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Toho jsem se bál, že někdo vytáhne gaussovská prvočísla ;-)
    24.2.2005 23:59 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ano, tak si tam doplnte kladne celociselne delitele. Tohle jsem presne tusil,ze to takhle dopadne. A jeste se muzeme pobavit treba o osmirozmernem prostoru, ale nejlepe nekde jinde.
    24.2.2005 23:31 Michal Kubeček
    Rozbalit Rozbalit vše Re: prvočísla v php
    A existuje nějaká výhoda té vaší? Jinou definici má smysl zavádět, pokud je v něčem výhodnější. Proto se např. někde považuje nula za přirozené číslo a někde ne. Ale nenapadá mne, v čem by mohla být výhodnější definice, podle které jsou jednotky zároveň prvočísly.
    24.2.2005 23:31 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    To asi také, a kromě toho je to obvyklá definice ;-)
    elviin avatar 18.5.2005 13:18 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Genericky generator v case kompilace v C++

    Aby C++ nezustalo pozadu:) Teda nevim k cemu je to dobry:) Blizsi info na C/C++ Journal. Tam uvadeji verze s debugovacima hlaskama.

    template<int P, int I> struct Prvocislo
    {
    	enum { vysledek = ( P == 2 ) || ( P % I ) && 
    		Prvocislo<( I > 2 ? P : 0), I-1>::vysledek } ;
    }
    
    
    template<> struct Prvocislo<0, 0>
    {
    	enum { vysledek = true } ;
    }
    template<> struct Prvocislo<0, 1>
    
    {
    	enum { vysledek = true } ;
    }
    
    int main()
    {
    	return 0;
    }
    
    18.5.2005 15:01 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: Genericky generator v case kompilace v C++
    Původní algoritmus v Prologu vypadal asi takhle :o)
    prvocislo(0, 0).
    prvocislo(0, 1).
    prvocislo(P, I):-
    	(
    		P == 2;
    		Mod is P mod I,
    		Mod > 0
    	),
    	I_1 is I - 1,
    	(
    		I > 2,
    		prvocislo(P, I_1);
    		prvocislo(0, I_1)
    		
    	).
    prvocislo(P):-
    	I is P-1,
    	prvocislo(P, I).
    
    bazil avatar 25.2.2005 02:46 bazil | skóre: 33 | blog: sluje | Miroslav
    Rozbalit Rozbalit vše Re: prvočísla v php
    snad trochu pomuzu, jednou sme dostaly za ukol vytvorit program v C, ktery co nejrychleji rekne jestli je to prvocislo nebo ne, nevim jestli to ten muj vyhral, ale byl rychly (borlandacky dosovy Ccko to nezaznamenalo [nejakej cas typu 0.00001])

    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    #include <time.h>
    #include <math.h>

    void main (void){
    clrscr();
    unsigned long int i,d,odm,c;
    clock_t start,end;
    zacatek:
    printf ("Program pro zjisteni prvocisel\n");
    printf ("Poznamka: Pragram neni schopen pojmout cislo vetsi nez\n");
    printf ("4 294 967 295, pri zadani vetsiho nepracuje");
    printf ("spravne, bere v potaz jen prvnich 10 cislic!");
    printf ("Program bere v potaz i funkcni klavesy");
    printf ("napr: ESC = 27 =>je delitelny 3.");
    printf ("Zadej prvocislo: ");
    cscanf ("%lu",&i);
    start = clock();
    odm = sqrt (i);
    if (i%2==0){
    clrscr();
    cprintf ("Cislo NENI prvocislo a je dejitelne 2");
    end = clock();
    printf ("\nCas vypoctu je: %f", (end - start) / CLK_TCK);
    getch();
    goto end;
    }

    else{
    d=3;
    while (d <= odm){


    if (i%d==0){
    printf ("Cislo NENI prvocislo a je delitelne %lu",d);
    end = clock();
    printf ("\nCas vypoctu je: %f", (end - start) / CLK_TCK);
    getch();
    goto end;
    }
    else{
    d=d+2;
    }
    }
    printf ("Cislo JE prvocislo!");
    end = clock();
    printf ("\nCas vypoctu je: %f", (end - start) / CLK_TCK);
    getch();
    goto end;

    }
    end:
    printf ("\n\n\nChces pokracovat (a/n)");
    c=getch();
    if (c == 97){
    goto zacatek;
    }
    else{
    clrscr ();
    }
    }

    na fce z casem kasli, definuj si cislo z co nejvetsim rozsahem, na goto se prosim nedivej(stydim se, ale bylo to nekdy davno a v ramci rychlosci ci co) a misto printf echo a scanf je nacitani, takze nekdy v tu chvili si uloz cislo do promenny a muzes to udelat treba cely ve velkym FORu, je to zalozeny na nejaky poucce o tom, ze cislo ma delitele mensiho nez odmocnina a jeste co nejmensiho a jeste se kontroluje delitelnost 2 (to vyhaze hodne) a jestli to neni to nejrychlejsi, co se da splodit, tak me nekamenujte ;-) pokud bys to chtel fakt prepsat do PHPka, tak se ozvi, v tuhle domu se mi nechce ... srry, ale chapes ne?;-)
    25.2.2005 10:43 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Procházení čísel postupně a zjišťování, zda je každé jednotlivé prvočíslo, není dobrý algoritmus, píšu to sem už asi potřetí. Myslel jsem sakra, že se Eratosthenovo síto běžně učí, když ne v programování, tak v matematice.

    Kromě toho, všechna 32bitová čísla jsou tak malá, že je rozložíš okamžitě skoro jakkoli. Pro velká čísla existují efektivnější postupy, ty ale už vyžadují znalost teorie čísel...
    bazil avatar 25.2.2005 13:26 bazil | skóre: 33 | blog: sluje | Miroslav
    Rozbalit Rozbalit vše Re: prvočísla v php
    ja tu nikde netvrdil ze to ma resit pomoci mojeho programu, je to jen jeden z nejrychlejsich zpusobu, jak prijit na to, jestli je cislo prvocislo nebo neni ... vim ze prochazet je vsechny po jednom je blbost, ale z vyuzitim nejakeho pole by to slo resit i z timhle algoritmem efektivne, jen v ty dve v noci co sem to psal se mi to fakt nechtelo vymejslet ... a nechce stale :-)
    25.2.2005 14:51 jm
    Rozbalit Rozbalit vše Re: prvočísla v php
    Tak napis neco lepsiho, ne? Krome dvou reseni a asi tri prispevku k veci se tady akorat plka o nesmrtelnosti chrousta...
    25.2.2005 15:11 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: prvočísla v php
    Tak napis neco lepsiho, ne?
    Však jedno z těch řešení napsal Yeti... Víc to asi vylepšovat nejde (tedy pokud to chceme řešit algoritmem -- najít čísla do jednoho milionu je kokrétní instance nějaké úlohy, takže se dá "vyřešit" vypsáním výsledku ;-))
    25.2.2005 15:42 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Napsal jsem algoritmus Eratosthenova síta, a to jako svůj první příspěvek. Zadání, že to má být v PHP, zatím nesplnil nikdo, ani ty ;-)
    25.2.2005 12:44 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: prvočísla v php
    Borland na první pohled, skutečně ;-) Já furt chodím a tvrdím, že když se mi nějaký program pokusí vymazat obrazovku, tak ho na oplátku vymažu taky. A stále jsem za blba :-(
    Copak toho není dost?
    25.2.2005 13:06 Michal
    Rozbalit Rozbalit vše Re: prvočísla v php
    Hehe to je pravda. Hodne Cckaru prechazelo z Borland Pascalu a ti byli uplne nejlepsi protoze psali starym zvykem clrscr; coz je syntakticky spravne ale obrazovku to nesmaze takze ty jejich programy pak fungovaly dle mych predstav :-)
    25.2.2005 16:04 psychosoma | skóre: 17
    Rozbalit Rozbalit vše Re: prvočísla v php
    Dekuji Vam vsem , moc jste me pomohli s tim co to jsou v podstate prvocisla a jak na ne . Tedka uz jsem v obraze .
    5.5.2005 15:37 simkovic
    Rozbalit Rozbalit vše Re: prvočísla v php
    pokud byste to chtěli tím nejhorším způsobem, jakým to jde... njn, začátky bývaly těžké....

    if ($u >= 1) { $k = 1; for($g = 2; $g < $u; $g++){ $bb = $u / $g;

    $cc = substr_count($bb, "."); // kdyz je prvocislo, vyplivne jen jednicky $dd = substr_count($cc, "0"); // kdyz je prvocislo, vyplivne jen nuly $k = $k+$dd; // kdyz je prvocislo, vyplivne 1 } }

    if($k == 1){ echo "
    Tohle číslo je prvočíslo.
    "; } else { echo "
    Tohle číslo není prvočíslo.
    "; } }

    ?>
    5.5.2005 16:05 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ach ano, na tento nejhorší způsob řešení tato diskuse opravdu čekala celé dva měsíce... A hlavně napoužívat <pre> tag, aby se to nedalo číst...
    18.5.2005 10:40 Open Mage | skóre: 24 | Lom
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ahoj, využil jsem příkladu pana jm v C a přepsal jej narychlo do PHP, možná to nebude úplně okey, ale funguje to parádně. Stačí zvolit $k = 1000000; a program ti vygeneruje řadu prvočísel, kterou potřebuješ. Trochu pozdě, ale přeci, předpokládám, že už si na to přišel i sám ;o) \n"; // cyklus - vyuzijeme toho ze dvojka je vyresena, zaciname na cisle tri, hledame prvocisla do stovky, zvetsujeme o dva, jelikoz suda cisla vetsi jak dve nemohou byt prvocisla for ($i = 3; $i < 100; $i = $i+2 ) { $l = 0; for ($j = 2; $j < $i; $j++) { if ($i % $j == 0) { $l++; break; } } if ($l == 0) { echo "$i je prvocislo
    \n"; $i; } } return 0; ?>
    Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
    18.5.2005 11:22 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Ano, na toto další neefektivní řešení jsme tři měsíce netrpělivě čekali...

    Mimochodem, začíná to //, takže je to celé komentář :o)
    18.5.2005 11:37 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    Safr, já snad napíšu Erthostenovo síto v dc. To je aspoň výzva :-)
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.5.2005 16:15 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    dc -e '?dSavSb[SadLa+d1r:cdla>e]se[dlexsz]sd1[1+d;c0=ddlb>f]dsfx[p]sdlaSb1lfx' <<<100
    Ale je to o hodně pomalejší než v C :-)
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.5.2005 12:45 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    tak me to vsechno tady tak nejak inspirovalo, ze sem zavspominal na funkcionalni programovani :-) (tak tenhle agoritmus umi vypsat vsechna prvocisla...)

    zbytek a b = mod b a > 0 prvocisla [] = [] prvocisla (x:s) = x:prvocisla(filter (zbytek x) s) provocisla [2..]

    pokud chcete do toho 1000000 (nebo kolik to bylo) tak: provocisla [2..1000000]

    a funguje to :-) (az se sam sobe divim...)
    [2,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,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919,7927,7933,7937,7949,7951,7963,7993,8009,8011,8017,8039,8053,8059,8069,8081,8087,8089,8093,8101,8111,8117,8123,8147,8161,8167,8171,8179,8191,8209,8219,8221,8231,8233,8237,8243,8263,8269,8273,8287,8291,8293,8297,8311,8317,8329,8353,8363,8369,8377,8387,8389,8419,8423,8429,8431,8443,8447,8461,8467,8501,8513,8521,8527,8537,8539,8543,8563,8573,8581,8597,8599,8609,8623,8627,8629,8641,8647,8663,8669,8677,8681,8689,8693,8699,8707,8713,8719,8731,8737,8741,8747,8753,8761,8779,8783,8803,8807,8819,8821,8831,8837,8839,8849,8861,8863,8867,8887,8893,8923,8929,8933,8941,8951,8963,8969,8971,8999,9001,9007,9011,9013,9029,9041,9043,9049,9059,9067,9091,9103,9109,9127,9133,9137,9151,9157,9161,9173,9181,9187,9199,9203,9209,9221,9227,9239,9241,9257,9277,9281,9283,9293,9311,9319,9323,9337,9341,9343,9349,9371,9377,9391,9397,9403,9413,9419,9421,9431,9433,9437,9439,9461,9463,9467,9473,9479,9491,9497,9511,9521,9533,9539,9547,9551,9587,9601,9613,9619,9623,9629,9631,9643,9649,9661,9677,9679,9689,9697,9719,9721,9733,9739,9743,9749,9767,9769,9781,9787,9791,9803,9811,9817,9829,9833,9839,9851,9857,9859,9871,9883,9887,9901,9907,9923,9929,9931,9941,9949,9967,9973,10007,10009,10037,10039,10061,10067,10069,10079,10091,10093,10099,10103,10111,10133,10139,10141,10151,10159,10163,10169,10177,10181,10193,10211,10223,10243,10247,10253,10259,10267,10271,10273,10289,10301,10303,10313,10321,10331,10333,10337,10343,10357,10369,10391,10399,10427,10429,10433,10453,10457,10459,10463,10477,10487,10499,10501,...]
    
    never use rm after eight
    18.5.2005 12:47 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    kruci zapomel sem dat ten algoritmus do pre:
    zbytek a b = mod b a > 0 
    prvocisla [] = [] 
    prvocisla (x:s) = x:prvocisla(filter (zbytek x) s)
    provocisla [2..]
    
    never use rm after eight
    18.5.2005 13:21 Open Mage | skóre: 24 | Lom
    Rozbalit Rozbalit vše Re: prvočísla v php
    Vložil jsem to mezi tag code, nevim proc se to rozesere (prvni cast kodu zmizela, cely se to rozhodi...) sorry, asi jsem debil.
    Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
    18.5.2005 13:26 Martin Beránek | skóre: 33 | blog: mousehouse | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    code funguje inline, kdezto pre na vice radku :-)
    never use rm after eight
    18.5.2005 13:36 Open Mage | skóre: 24 | Lom
    Rozbalit Rozbalit vše Re: prvočísla v php
    No vida, tak jsem debil no :o) Sorry, tady je to znovu :
    // deklarace promennych
    $j = 0;
    $l = 0;
    
    // vyuziti poznatku z matematiky pro zakladní skoly - cislo 1 neni cislo soudelne ani prvocislo, cislo 2 je prvocislo prvni
        echo "2 je prvocislo 
    \n"; // cyklus - vyuzijeme toho ze dvojka je vyresena, zaciname na cisle tri, // hledame prvocisla do stovky, zvetsujeme o dva, jelikoz suda cisla vetsi jak dve nemohou byt prvocisla for ($i = 3; $i < 100; $i = $i+2 ) { $l = 0; for ($j = 2; $j < $i; $j++) { if ($i % $j == 0) { $l++; break; } } if ($l == 0) { echo "$i je prvocislo\n"; $i; } } return 0;
    Stanislav Puffler, DiS. specialista na internet marketing a ecommerce www.openmage.cz tel. 773 565 747
    18.5.2005 14:27 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Všechna prvočísla do 2^31 - 1 (nechce se mi řešit znaménkovosti) najdu jednoduchým prográmkem v C do 50s. K ničemu to ovšem není, protože vypsat je trvá naprosto nechutně dlouho. Původní milion trvá najít méně než 0,0014s...

    Umí tohle váš kečup?
    18.5.2005 16:22 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    Jsem trochu zklamany. Maji v tom dc nějak blbě implementovaná pole, nebo jsou pomalé cykly, nebo kýho šlaka, ale Erathostenovo síto v dc je hodně pomalejší než v C. Už pro 10 000 (bez vypisování)
    $ time dc -e '?dSavSb[SadLa+d1r:cdla>e]se[dlexsz]sd1[1+d;c0=ddlb>f]dsfx' <<<10000
    
    real    0m3.147s
    user    0m3.140s
    sys     0m0.000s
    
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.5.2005 16:46 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: prvočísla v php
    Hm, já jsem si mezitím řekl, že jsem na 64bitu a napsal síto takhle:
    #define ebit64(e,i) ((e)[(i)/128] & (1 << (((i)%128)/2)))
    #define eset64(e,i) (e)[(i)/128] |= (1 << (((i)%128)/2))
    
    static guint64*
    eratosthenes_bit64(unsigned long int n)
    {
        guint64 *e;
        unsigned long int i, j, limit;
    
        e = (guint64*)calloc(MAX(1, (n + 127)/128), sizeof(guint64));
        eset64(e, 0);
        if (n < 9)
            return e;
    
        limit = floor(sqrt(n));
        j = 3;
        do {
            for (i = j*j; i < n; i += 2*j)
                eset64(e, i);
            j += 2;
            while (ebit64(e, j))
                j += 2;
        } while (j <= limit);
    
        return e;
    }
    
    což srazilo čas z 50s téměř na 30s. Možná ty 64bity přece jen k něčemu jsou ;-)
    19.5.2005 10:01 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: prvočísla v php
    Tak jsem to trošku zoptimalizoval podle tvojí implementace.
    $ time dc -e '?dSavSb[d1r:cSadLa+dla!<e]se[ddSa2*Lad*lexszsz]sd3[d;c0=d2+dlb!<f]dsfx' <<<10000       
    
    real    0m0.120s
    user    0m0.120s
    sys     0m0.000s
    
    Na C to ale stále zdaleka nemá. Krom toho se to kolem 100 000 brutálně zpomalí.
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.