23
-
pista007 #23 A 2007 hogy lenne már prímszám????? a számjegyek összege osztható 3-mal, és az azt jelenti, hogy a 2007 is!!!!!!!!!!!!!!!!!!!!! -
#22 a 2007 az prímszám ? -
AranyKéz #21 A legnagyobb páratlan szám keresése projekt -
Dodo55 #20 Igen, de vannak bbcode-ok, azzal tudsz formázni. -
#19 A Mersenne projekt honlapja
Ez pedig egy ismert szamspiral prim szamok abrazolasahoz. Van regeteg ilyen geometriai alakzatokra valo primabrazolas, nem csak az Arkhimedesz spiralra. Ezekkel a modszerekkel lehet kovetkeztetni, hogy hol helyezkednek el primek nagy valoszinuseggel. -
#18 html kodokat frankon ignoralja a cms -
#17 <i>"Én egyszer olyat próbáltam csinálni, ami egy dinamikus tömbben eltárolja a talált prímeket, és úgy működött, hogy "kilyuggatta" a számegyenest."</i>
Klikk ide, mivel mar sokadszor kerul szoba.
<i>"És az is biztos, hogy egy 1024 bites prímtesztben nem lehet tárolgatni már a prímeket."</i>
De lehet, a megfelelo eszkozok birtokaban es/vagy tartomanyokra kell bontani, csak a referenciaertekeket kell tarolni es minden tartomany megkezdese elott a regit elmenteni, az ujat pedig betolteni a referenciaertekekkel egyutt.
Ezert van az, hogy titkositashoz nem ilyen modszereket alkalmaznak, hanem relativ primeket keresnek. Pl, Ferman teszt. Meg van meg tengernyi modszer primszamok keresesere. -
Caro #16 Szép és jó, de ha titkosítani akar a szerencsétlen, akkor 128-4096 bites prímszámokra lenne szüksége.
Ezeket hogyan találja ki ilyen Móriczka-programmal? :)
Én egyszer olyat próbáltam csinálni, ami egy dinamikus tömbben eltárolja a talált prímeket, és úgy működött, hogy "kilyuggatta" a számegyenest. Tehát ha megvolt egy prím, akkor a tömb prímhez tartozó elemébe (nx2-es tömb) eltárolta a prím kétszeresét. Ha ez foglalt volt, tehát már egy másik prím volt benne, akkor hozzáadta megint a prímet, egészen addig, míg egy új "lyuk" nem keletkezett.
Nagyon nem optimalizáltam ki, meg lehet, hogy láncolt listával volt ez a második fele, nem pedig nx2-es tömbbel, de döglassú volt :)
És az is biztos, hogy egy 1024 bites prímtesztben nem lehet tárolgatni már a prímeket. Rengeteg van.
Viszont ha valaki akarja, próbálja meg az N-edik prímig venni a prímek összegét.
Egy meglepően szabályosnak tűnő függvényt kapunk, de valahogyan mégsem lehet rá illeszteni függvényt pontosan. Valószínűleg tényleg csak látszólag szabályos. -
#15 Alakul.
Termeszetesen a gyokvonasos megoldasnal van jobb is viszont a Te progidban mar ez is nagy elorelepes.
Erdemes meg figyelni arra, hogy ne vegezd el a gyokvonast a belso ciklus minden ismetlodesenel. Vegyel fel egy segedvaltozot amibe kiszamolod eloszor a gyokot, majd a for ciklus befejezo feltetelenel ezt adod meg. Ugyanis, akarhanyszor lefut a belso ciklus, minden alkalommal gyokot von, de a te esetedben csak a kulso ciklus aktualis ertekenek gyoke szamit.
Ez nagyon sokat fog dobni a teljesitmenyen es te is sokat fogsz tanulni belole. Ha ezzel meg vagy, akkor probalkozhatsz az 5-tel oszthatok kiejtetesevel is, mert ottel nem vegzodik primszam, kivetel az 5.
Termeszetesen ezt a programocskat szinte a vegtelensegig lehet meg optimalizalni, de ebbol fogsz tanulni. -
#14 "Ez a példa kicsit megkevert, de ugye arra gondolsz, hogyha pl a 25-öt vizsgálom, akkor elég 5-ig megnéznem a maradékos osztást?"
Igen.
FreeBasic az jo lesz (talan). -
Dodo55 #13 Megcsináltam, hogy csak a páratlan számokat nézze, hogy csak a négyzetgyökükig ellenőrizzen, és csak azokat írja ki, amik prímek, és most csak 7 perc volt, míg végigment, és a kapott fájl egyezik az 1 óra alatt végbement előző keresés által eredményezett fájlal, szóval jól működik az optimalizálás után is a programom. -
Dodo55 #12 "Miert iratod ki az "i" erteket? Felesleges. Eleve annyi szam lesz a "fajlban" mint amennyi primet talaltal es a sorvegek megszamolasaval mindig a szukseges szamra tudsz allni, ha kesobb fel is szeretned hasznalni a generalt szamokat."
Mert szeretném látni hol tart a folyamat, de mondtam, hogy ezt tudom, hogy sokat lassít, majd kiveszem.
"3. Miert messz el (i-1)-ig a ciklussal? 6x3 is 18, meg 3x6 is.
Elegendo a gyokeig elmenned."
Ez a példa kicsit megkevert, de ugye arra gondolsz, hogyha pl a 25-öt vizsgálom, akkor elég 5-ig megnéznem a maradékos osztást?
4. Miert vegzel el ketmillio maradekos osztast?
Azt ugy is tudjuk, hogy 2 kivetelevel minden masodik szam prim, tok felesleges oket ellenorizni. Leptessed kettesevel a ciklust es ugrald at a paros szamokat.
Ez igaz, kicsit siettem, ezért ezt véletlenül kihagytam.
"5. Siman irassad ki a terminal ablakba egymas ala a szamokat, majd iranyitsd at fajlba."
Dark Basic Pro meg a terminalablak... A Dark Basic Pro egy 3D játékok készítéséhez kifejlesztett ide+compiler. Még a sima szövegkiírást is DirectDraw-al oldja meg.
Bár mondjuk van egy FreeBasic nevű compiler, ami terminálablakba nyomja ki a dolgokat, talán átírom kicsit a progit, és megpróbálom azzal, és akkor tudom használni a fájlba átirányítást. -
#11 "eleg csak a mar megtalt primmekkel probalkozni mod ra"
a mostani igy mukodik
"Ha csak 1000000 kellenek akkor szita modszert is lehet hasznalni."
ez az Eratosthenes szita amit emlitettem :-)
-
turul16 #10 "4. Miert vegzel el ketmillio maradekos osztast?
Azt ugy is tudjuk, hogy 2 kivetelevel minden masodik szam NEM prim, tok felesleges oket ellenorizni. Leptessed kettesevel a ciklust es ugrald at a paros szamokat."
Gyokvonas sem kell igazan, az is kikoszobolheto, eltarolva egy szamot es negyzetet, a szamig ellenorzod, a negyzetenel kisebb gyanisitottakra, amint nagyobb szamokat kell vizsgalni a szamot noveled egyel, es ujra szamolod a negyzetet. Ez egy hasonlitast eremenyez, nemely elysetben egy inc + szorzast is, ami meg mindig kevesebb mint egy gyokvonas ido igenye.
Valamint eleg csak a mar megtalt primmekkel probalkozni mod ra.
Ha csak 1000000 kellenek akkor szita modszert is lehet hasznalni.
Nagyabol:
0. 10000000 elemu bitvektor kezdo ertek true.
,
p=2
1. minden pedik megjelol falsnak
2. a legkisebb meg nem hasznalt true val jelzett index el legyen egyenlo p
3. ha p meg nem eleg nagy (<1000), ugras 1 -re.
Ami true maradt az prim. Lehet kifirkalni. -
#9 Valami ilyesmi formaban fogod megkapni, ha atiranyitod a konzol kimenetet a fajlba.
Meg egy hasznos tipp: az igy kapott fajlt beimportalhatod excelbe es jatszadozhatsz a primekkel grafikonon. -
#8 Elirtam a szamozast. Szorri. -
#7 1. Ez a faktorizacio.
3. Nem a nyelv miatt ilyen atkozottul lassu, hanem azert mert egy csomo olyan muveletete elvegzel ami felesleges.
2. Miert iratod ki az "i" erteket? Felesleges. Eleve annyi szam lesz a "fajlban" mint amennyi primet talaltal es a sorvegek megszamolasaval mindig a szukseges szamra tudsz allni, ha kesobb fel is szeretned hasznalni a generalt szamokat.
3. Miert messz el (i-1)-ig a ciklussal? 6x3 is 18, meg 3x6 is.
Elegendo a gyokeig elmenned.
4. Miert vegzel el ketmillio maradekos osztast?
Azt ugy is tudjuk, hogy 2 kivetelevel minden masodik szam prim, tok felesleges oket ellenorizni. Leptessed kettesevel a ciklust es ugrald at a paros szamokat.
5. Siman irassad ki a terminal ablakba egymas ala a szamokat, majd iranyitsd at fajlba.
pl mukodjon kb. igy:
primgen.exe
3
5
7
11
...
ha igy mukodik, akkor intitsad el igy:
primgen.exe > primszamok.txt
Ha lefutott, akkor visszakapod a konzolt es meg lesz irva a fajl is.
Hat, diohejban ennyi. Remelem segithettem. -
Dodo55 #6 "A kozismert faktorizacios generalasi metodust hasznalja."
Ezt én nem ismerem, ezért saját módszert használok:
for i=1 to 1000000
print i
for i2=2 to i-1
if i MOD i2=0 then p=0 : exit
if i MOD i2<>0 then p=1
next i2
if p=1 then pr(ptr)=i : ptr=ptr+1
next i
Dark Basic Proban írtam a programot, C/C++-ban biztos sokkal gyorsabb lett volna, de még nem tanultam meg abban a fájlkezelést, a talált prímszámokat meg ilyen nagy mennyiségnél mindenképp ki kell írni fájlba, ha meg akarom őket nézni.
Lehet, hogyha a print i-t kihagytam volna, akkor sokkal gyorsabb lett volna, de szerettem volna látni, hogy hol tart. -
#5 Az itt benchmarkkent hasznalt primszamgeneratort csak osszecsaptam, semmi optimalizalas, semmi extra. A kozismert faktorizacios generalasi metodust hasznalja. Az Eratosthenes metodussal tizedmasodpercek alatt szokott vegezni ugyanez a gep, ugyanezzel a vizsgalati tartomannyal.
Gep: P4 2GHz
Vizsgalati taromany: 3 - 10.000.000
A legocskabb futasi ido: 21 sec
Te valamit nagyon eltoltal ott Dodo.
-
#4 1 ora? Csak nem C64-en csinaltad? -
Dodo55 #3 Én írtam egy programot az előbb, ami 1 és 1000000 között megkeresi az összes prímszámot, kb 1 órába telt amíg végzett, összesen 78497 prímszámot talált, a legnagyobb a 999983. -
juzosch #2 Azta 700 gépet értelmes projectre is használhatták volna. Ez az egész csak figyelemfelkeltésre jó. -
djukel #1 bámulatos hol tart már a tudomány