abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 22:44 | IT novinky

    IBM kupuje společnost HashiCorp za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 0
    dnes 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 1
    dnes 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | IT novinky

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 6
    včera 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 21
    včera 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 29
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 720 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: prvočísla v php

    24.2.2005 20:21 psychosoma | skóre: 17 | Praha
    prvočísla v php
    Přečteno: 2602×
    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 | Praha
    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.