Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Algarvud(Primes) algoritm märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
lehm2
Kreisi kasutaja


liitunud: 19.09.2004




sõnum 09.07.2009 19:12:33 Algarvud(Primes) algoritm vasta tsitaadiga

Vaja oleks algarvude algoritme, erinevad viisid + selgitused. Eriti hea oleks kui saaks eesti keelsed. thumbs_up.gif
_________________
Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust !
Kommentaarid: 15 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Mucrop3
Lõuapoolik
Lõuapoolik
Mucrop3

liitunud: 28.03.2004




sõnum 09.07.2009 19:53:44 vasta tsitaadiga

http://www.youtube.com/results?search_query=prime+numbers&search_type=&aq=f
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 14.07.2009 12:26:28 vasta tsitaadiga

Pakun et google annab suts paremaid tulemusi, kui youtube icon_razz.gif

Algoritm ise on lihtne:
kui arv jagub jäägita ainult 1 ja iseendaga siis on tegu algarvuga.

_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.07.2009 12:31:04 vasta tsitaadiga

See on teoorias tore, kuid kas peab siis tõesti kõigi teiste arvudega proovima, et ei jaguks? Iga arv ju jagub 1 ja iseendaga, seal pole midagi proovida, kuid peab teistega siis ju proovima, et ei jaguks.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 14.07.2009 12:39:13 vasta tsitaadiga

Enam-vähem. Päris kõigiga ei pea, ainult nendega millega juba proovinud pole (hint -> kui arv jagub 9'ga siis jagub ta ka 6 ja 3'ga)

Väga suurte algarvude kontrolliks on olemas ka mingid erilisemad algoritmid kuid neid ma paraku nii hästi ei tea. Kõiksugu kooliülesannete jaoks piisab kõige harilikumast jaguvuse kontrollist ning 1-1M arvude leidmine peaks võtma heal juhul paar sekundit.

_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 14.07.2009 13:19:25 vasta tsitaadiga

http://en.wikipedia.org/wiki/Formula_for_primes
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 14.07.2009 16:37:49 vasta tsitaadiga

Nja, seal wiki lehel on suht üldine info, code samplitest pole haisugi kus näeks antud loogikat koodi kujul.

Algarvu kontrolle on mitmeid ja mitme loogikaga:
lihtsaim mis käib kõik arvud läbi: for(i = 2, onalgarv = true; i < arv; i++) if(arv % i == 0) {onalgarv = false; break;}
kavalam, mis käib arvu ruutjuureni läbi: for(i = 2, onalgarv = true; i <= sqrt(arv); i++) if(arv % i == 0) {onalgarv = false; break;}
miks ruutjuureni on seepärast, et kui sa saad teada et 6/2=3 siis sellest piisab et välistada algarvuks olemine, ei pea kontrollima veel ka 6/3=2
veel kavalam edasiarendus oleks: onalgarv = arv % 2 == 0; if(!onalgarv) for(i = 3, onalgarv = true; i <= sqrt(arv); i+=2) if(arv % i == 0) {onalgarv = false; break;}
miks nii, seepärast et miks kontrollida nii mitmete paarisarvudega jagamist, paarisarvuga jagub arv ainult siis kui ta ise on paarisarv. paarisarvulisuse kontrolli kohe alguses ära tehes vähendab hilisemaid kontrolle 50% võrra

On ka keerulisemaid ja efektiivsemalt töötavaid algoritme ilusate nimedega, aga neid hetkel peast kirja panna ei mäleta.

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 14.07.2009 16:40:21 vasta tsitaadiga

On veel üks väike algoritmi kiirendamise variant mis veidkese lisamälu kasutamisega tõstab kiirust üsna mitme suurusjärgu võrra kuid kuna tegu on üsna tõenäoliselt kooliülesandega siis ei hakkaks igaks juhuks seda välja ütlema icon_razz1.gif
_________________
Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity"
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 86
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
virus152
HV vaatleja
virus152

liitunud: 05.03.2009




sõnum 15.07.2009 01:41:17 vasta tsitaadiga

Ho Ho kirjutas:
On veel üks väike algoritmi kiirendamise variant mis veidkese lisamälu kasutamisega tõstab kiirust üsna mitme suurusjärgu võrra kuid kuna tegu on üsna tõenäoliselt kooliülesandega siis ei hakkaks igaks juhuks seda välja ütlema icon_razz1.gif

Lisaks peaks normaalsuse piires ligikaudset (esimesed 2 tüvenumbrit paistavad üldjuhul kattuvat) x-st väiksemate algarvude hulka arvutada valemiga x/(ln x - 1).
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
guest1902
Kreisi kasutaja
guest1902

liitunud: 05.11.2005




sõnum 15.07.2009 11:37:38 vasta tsitaadiga

virus152 kirjutas:
valemiga x/(ln x - 1).

x/ln x

Siit saab keerulisemaid algoritme, kui uuritavat arvu selle ruutjuure alamosani paiknevate arvudega läbijagamine. Nt kui kahega jagamise kontroll teha enne tsüklit, siis saab küll 50% arvudest lahti, kuid kolmega jagamine säästaks veel ~16,7%, 5-ga ~6,7% jne. Aga pole mõtet uuesti jalgratast leiutada...
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
virus152
HV vaatleja
virus152

liitunud: 05.03.2009




sõnum 15.07.2009 12:54:55 vasta tsitaadiga

Elrak kirjutas:
virus152 kirjutas:
valemiga x/(ln x - 1).

x/ln x

Kui 1 maha võtta tuleb täpsem. 1000-s on 168 algarvu, ilma üheta saad 145, ühega 169. 10000ga vastavalt 1229, 1086 ja 1218.
http://primes.utm.edu/howmany.shtml#1
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
guest1902
Kreisi kasutaja
guest1902

liitunud: 05.11.2005




sõnum 15.07.2009 14:27:07 vasta tsitaadiga

virus152 kirjutas:
Elrak kirjutas:
virus152 kirjutas:
valemiga x/(ln x - 1).

x/ln x

Kui 1 maha võtta tuleb täpsem. 1000-s on 168 algarvu, ilma üheta saad 145, ühega 169. 10000ga vastavalt 1229, 1086 ja 1218.
http://primes.utm.edu/howmany.shtml#1

Ok, sul paistab selle koha pealt õigus olevat, täpsem on küll. See "Diskreetse matemaatika elemendid" on ikka päris vigane raamat, vead nii ülesannetes kui sisus. icon_evil.gif
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Algarvud(Primes) algoritm
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.