Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
lehm2
Kreisi kasutaja

liitunud: 19.09.2004
|
09.07.2009 19:12:33
Algarvud(Primes) algoritm |
|
|
Vaja oleks algarvude algoritme, erinevad viisid + selgitused. Eriti hea oleks kui saaks eesti keelsed.
_________________ Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust ! |
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
Mucrop3
Lõuapoolik


liitunud: 28.03.2004
|
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
14.07.2009 12:26:28
|
|
|
Pakun et google annab suts paremaid tulemusi, kui youtube
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 |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
14.07.2009 12:31:04
|
|
|
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 |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
14.07.2009 12:39:13
|
|
|
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 |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
14.07.2009 16:37:49
|
|
|
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 |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
14.07.2009 16:40:21
|
|
|
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
_________________ 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 |
|
 |
virus152
HV vaatleja

liitunud: 05.03.2009
|
15.07.2009 01:41:17
|
|
|
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  |
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 |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
15.07.2009 11:37:38
|
|
|
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 |
|
 |
virus152
HV vaatleja

liitunud: 05.03.2009
|
15.07.2009 12:54:55
|
|
|
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 |
|
 |
guest1902
Kreisi kasutaja

liitunud: 05.11.2005
|
15.07.2009 14:27:07
|
|
|
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.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
|