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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 0
včera 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
včera 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 3
7.12. 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
7.12. 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 2
7.12. 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 6
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 27
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 797 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: prvočísla v php

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