Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kertoma

Sivun loppuun

Olli [05.05.2011 18:07:37]

#

Hei,
Haluaisin selvittää, kauanko palvelinkoneeltani kestää kertoman laskeminen esimerkiksi miljoonaan tai kahteen miljoonaan.

Ongelmaksi muodostuu kuitenkin PHP:n merkkirajoitus ja se että php merkitsee liian pitkät luvut näin: 6.2044840173324E+23

Miten saisin kierrettyä tuon merkkirajoituksen ja aloittamaan kaavan 1000000! laskemisen? Pitäisikö tulos jakaa useampiin merkkijonoihin?

Olen kokeillut tätä koodia, mutta silläkin suurin arvo on 170! ja suuremmissa kuin 170 koodi tulostaa INF.

Kiitos vastauksista.

Triton [05.05.2011 18:22:08]

#

Eräs vaihtoehto on ohjelmoida algoritmi, joka käsittelee lukuja merkkijonoina. Silloin lukualue ei pääse loppumaan kesken...

Metabolix [05.05.2011 18:25:30]

#

Voit myös käyttää jotain valmista pitkien lukujen kirjastoa. Pari vaihtoehtoa mainitaan PHP:n ohjeissa.

Triton [05.05.2011 19:08:11]

#

Metabolix kirjoitti:

Voit myös käyttää jotain valmista pitkien lukujen kirjastoa. Pari vaihtoehtoa mainitaan PHP:n ohjeissa.

Toki tuolla pääsee helpolla, mutta tuollaisen algoritmin tekeminen on ainakin opettavaista...

Lebe80 [05.05.2011 19:46:39]

#

Toni: Opettaahan se ainakin sen, ettei aina tarvitse keksiä pyörää uudelleen :)

Olli [05.05.2011 20:09:30]

#

Kiitoksia vastauksista. Mitähän näistä funktioista pitäisi käyttää?

EDIT:Sain ongelman ratkaistua.Kiitos!

EDIT2:Nyt tuli eteen toinen ongelma : jos yritän selvittää liian ison luvun kertomaa, esimerkiksi miljoonan kertomaa, sivun lataus kaatuu virheeseen 500. Miten tämän voi estää ?

Triton [05.05.2011 21:40:21]

#

Lebe80 kirjoitti:

Opettaahan se ainakin sen, ettei aina tarvitse keksiä pyörää uudelleen :)

Minusta se ainakin on ihan varteenotettavaa tietotaito, että tietää, miten joku asia toimii, eikä vain aina yhdistä valmiita palikoita yhteen. Toki nykypäivän ohjelmointi ja ohjelmistokehitys on hyvin pitkälti edellä mainitun kaltasta, mutta joskus voi tulla se tilanne vastaan, ettei sitä valmista ratkaisua olekaan saatavilla ja mielestäni juuri tälläinen itse tekeminen valmeentaa näitä tilanteita varten.

Metabolix [05.05.2011 22:08:08]

#

Olli kirjoitti:

sivun lataus kaatuu virheeseen 500

Tuleeko palvelimen virhelokiin jokin viesti?

Jaska [06.05.2011 00:22:42]

#

Jos lukualue loppuu kesken ja likimääräinen aika kelpaa, voit mitata pienellä testillä, kuinka kauan lukujen A ja B tulo lasketaan, missä A on n-numeroinen luku ja B m-numeroinen. Sitten voit valita algoritmin ja katsoa, montako kertolaskua sinun tarvitsee suorittaa laskeaksesi kertoman. Aikavaativuus on melko varmasti analysoitu julkaisussa

Peter Borwein. "On the Complexity of Calculating Factorials". Journal of Algorithms 6, 376–380 (1985).

En ole varma, mikä on nopein tapa laskea mielivaltaisia kertolaskuja, mutta isojen lukujen kertolasku on asymptoottisesti nopeinta tehdä Fürerin algoritmilla

http://www.cse.psu.edu/~furer/Papers/mult.pdf

Olli [06.05.2011 18:06:22]

#

Metabolix kirjoitti:

Olli kirjoitti:

sivun lataus kaatuu virheeseen 500

Tuleeko palvelimen virhelokiin jokin viesti?

Mistä sen palvelimen virhelokin saa oikein esille ?
tuossa palveliessa oni jotakin vikana koska se ei näytä virheilmoituksia, vain aina ERROR 500

Metabolix [06.05.2011 18:07:41]

#

No se riippuu tietenkin palvelinkoneestasi. Minulla lokitiedosto on /var/log/lighttpd/error.log.

Olli [06.05.2011 18:10:08]

#

Ok. Haluaisin että ne virheet näkyisi suoraan näkyville web-selaimesa.Miten ne otetaan käyttöön ?

punppis [10.05.2011 01:38:14]

#

PHP:n asetuksista.

Google: how to enable php errors

edit:

Nuo HTTP-errorit onkin sitten web-serverin asetuksista. Esim. Apachen httpd.conf.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta