Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
jep, maar je weet niet, hoe hun dat berekend hebben, wij hebben hier al aardig wat dingen, die we kunnen schappen... en we hebben meer dan 1 computerOp woensdag 31 oktober 2001 20:11 schreef OiSyN het volgende:
[..]
Ja maar dat heb ik allang gegeven, in de vorige topic die hierover ging nog wel, en dus heb ik de hoop sowieso al opgegeven
Ik zal het nog een keertje kwoten:
[..]
Ga er maar vanuit dat zij ook wel even hebben nagedacht bij het maken van die berekeningenOp woensdag 31 oktober 2001 20:23 schreef KixAss456 het volgende:
jep, maar je weet niet, hoe hun dat berekend hebben, wij hebben hier al aardig wat dingen, die we kunnen schappen... en we hebben meer dan 1 computer
1
2
3
| Length (bits) Machines Memory 430 1 trivial 760 215,000 4 Gb |
576 zit daar ergens tussenin. jullie hebben meer dat 1 computer, maar geen 100.000 neem ik aan
Bezorgde tweaker ouder: "Zoon, waarom gaat die PC van jou nooit uit?"
Tweaker: "Omdat ik [insert dat lange getal hier] aan het crunchen ben."
Nog bezorgdere tweaker ouder: "Euh, en wat als de stroom uitvalt?"
Tweaker: "Ik heb niet voor niets een UPS staan."
Maar we klokken voor een deel wel over, helpt dat dan niet?Op woensdag 31 oktober 2001 20:27 schreef marcusk het volgende:
576 zit daar ergens tussenin. jullie hebben meer dat 1 computer, maar geen 100.000 neem ik aan
[onofficiele waarschuwing van The - DDD]
Argh, ik ben in een irri bui...
[/onofficiele waarschuwing van The - DDD]
Hier had uw advertentie kunnen staan :).
Nouja, of iets van de 50% voor GoT en 20% voor de winnaar en 30% voor de schijvers van de software?Op woensdag 31 oktober 2001 20:47 schreef KixAss456 het volgende:
Ligt eraan, als we al het geld aan Tnet ofzo geven, dan heeft heel GoT opeens een stier lopen
Typo:
Ok ik kan niet tellen
Hier had uw advertentie kunnen staan :).
dat is al 110%Op woensdag 31 oktober 2001 20:49 schreef rjsomeone het volgende:
[..]
Nouja, of iets van de 50% voor GoT en 30% voor de winnaar en 30% voor de schijvers van de software?
en waar blijft mijn deel? het was mijn idee
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Doe je niet mee met het schrijven van de software dan?Op woensdag 31 oktober 2001 20:56 schreef OiSyN het volgende:
[..]
dat is al 110%
en waar blijft mijn deel? het was mijn idee
Hier had uw advertentie kunnen staan :).
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
hm.. 0.0001 % genoegOp woensdag 31 oktober 2001 21:12 schreef OiSyN het volgende:
nou, op zich wel, ik zie dit alleen niet van de grond komen, maar dat terzijde... Maar voor mijn idee wil ik ook een deel hebben
Ik vraag ook niks voor het beginnen van dit gebeuren, maar ik wil offcourse welmeedoen met 't ontwerpen van de software.
Hier had uw advertentie kunnen staan :).
hm.. ja mij best, maar er zullen niet zo heel veel mensen meedoen als er niet wat te verdienen valt.Op woensdag 31 oktober 2001 21:21 schreef KixAss456 het volgende:
Mij maakt het geld nix uit, dus als ik mee doe met proggen, gaat mijn deel lekker naar Tnet
Hier had uw advertentie kunnen staan :).
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Beetje een hebberd heOp woensdag 31 oktober 2001 21:24 schreef OiSyN het volgende:
als het jou toch nix uitmaakt, mag jou deel dan naar mij?
Hier had uw advertentie kunnen staan :).
Ag, de eer vind ik genoeg... En mischien komt Paul Pietersma nog langsOp woensdag 31 oktober 2001 21:24 schreef rjsomeone het volgende:
[..]
hm.. ja mij best, maar er zullen niet zo heel veel mensen meedoen als er niet wat te verdienen valt.
Strax kan ik aan m'n kleinkinderen vertellen van: "Kijk, ik heb nog meegeholpen, met het kraken van de RSA code" (als de RSA dan nog niet failliet is
Als wij 't een beetje snel kraken wel jaOp woensdag 31 oktober 2001 21:26 schreef KixAss456 het volgende:
[..]
Ag, de eer vind ik genoeg... En mischien komt Paul Pietersma nog langs
Strax kan ik aan m'n kleinkinderen vertellen van: "Kijk, ik heb nog meegeholpen, met het kraken van de RSA code" (als de RSA dan nog niet failliet is)
Hier had uw advertentie kunnen staan :).
ik zei Kleinkinderen hè, zo lang zullen we er toch niet over doen?Op woensdag 31 oktober 2001 21:33 schreef rjsomeone het volgende:
[..]
Als wij 't een beetje snel kraken wel ja
Op woensdag 31 oktober 2001 21:50 schreef KixAss456 het volgende:
[..]
ik zei Kleinkinderen hè, zo lang zullen we er toch niet over doen?
Hier had uw advertentie kunnen staan :).
Op woensdag 31 oktober 2001 21:53 schreef rjsomeone het volgende:
[..]
ik bedoelde eigenlijk dat RSA failliet zou gaan als wij 't erg snel zouden kraken
Verwijderd
Waar is mijn deel?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
eerst kijken welk algoritme we gaan gebruiken, en dan ff verdeling maken van wie wat doet.....Op woensdag 31 oktober 2001 22:35 schreef OiSyN het volgende:
is het al af?
Waar is mijn deel?
Volgens mij is een algoritme dat alleen alle getallen tussen Sqr(getal) en Sqr(getal)*.5*Sqr(getal)+.5 eindigend op 1,3,7,9 genoeg is...
-er moet dus een cgi script komen dat dit aan kan..
-een algoritme dat HET getal deelt door al die getallen
Dat lijkt me genoeg voor nu.. Wie gaat er beginnen aan die 2e? Die eerste ga ik in iedergeval morgen of overmorgen aan beginnen, wie wil helpen, ga je gang.
Hier had uw advertentie kunnen staan :).
ik kan zo in ASP een scripje maken die dat kan, is SIM-PELOp woensdag 31 oktober 2001 22:45 schreef rjsomeone het volgende:
[..]
eerst kijken welk algoritme we gaan gebruiken, en dan ff verdeling maken van wie wat doet.....
Volgens mij is een algoritme dat alleen alle getallen tussen Sqr(getal) en Sqr(getal)*.5*Sqr(getal)+.5 eindigend op 1,3,7,9 genoeg is...
-er moet dus een cgi script komen dat dit aan kan..
-een algoritme dat HET getal deelt door al die getallen
Dat lijkt me genoeg voor nu.. Wie gaat er beginnen aan die 2e? Die eerste ga ik in iedergeval morgen of overmorgen aan beginnen, wie wil helpen, ga je gang.
.edit: waarom webscripting
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Is het dan niet voldoende om te zoeken naar een getal waar de RSA-code deelbaar door is? Als je een getal hebt, dan heb je het andere ook. Is het dus niet voldoende om een algoritme te bedenken die erg grote getallen kan delen door andere grote getallen (wat natuurlijk allang gedaan is)?
Ik zie even niet waarom een programma veel geheugenruimte nodig heeft om dat soort dingen uit te rekeken. Ook niet waarom dat zo extreem lang zou duren (215.000 computers in 1 jaar = 1 computer in 215.000 jaar). En waarom zou je zelf naar priemgetallen zoeken? Dat hebben ze bij de RSA al voor ons gedaan: die komen wel uit die deling rollen. 't Is te laat om na te denken, dus ik zal er wel naast zitten.
[ specs ] [ Tweaker gallery ]
Stap 1: Defineer een integer type met een zodoende lengte dat het getal er in past. Gebruik dit integer type voor alle berekeningen met het getal. Daarna is het gewoon loopen.
temp=1;
While (getal/2!=temp){
temp++;
if (getal%temp==0) {
if checkprime(temp) if checkprime(getal/temp) gevonden(temp,getal/temp);
}
}
En dan maar laten lopen. Ps procedures die niet ingevuld zijn zijn niet zo moeilijk. (checkprime-> controleert of getalletje een prime is (slaat even getallen over, rest is gewoon brute force checking) en gevonden is uitvoer.
Forget your fears...
...and want to know more...
rightOp donderdag 01 november 2001 01:57 schreef Explore het volgende:
Ik zal er wel niks van begrepen hebben, maar het is toch zo dat als je 2 priemgetallen met elkaar vermenigvuldigd, dat het product (produkt?) alleen deelbaar is door de 2 gezochte getallen en 1 en de gevonden uitkomst zelf. De RSA-code is dus een priemgetal wat het product is van de twee gezochte factoren (ook priemgetallen), right?
yup, dat is ook ongeveer wat we gaan doenIs het dan niet voldoende om te zoeken naar een getal waar de RSA-code deelbaar door is? Als je een getal hebt, dan heb je het andere ook. Is het dus niet voldoende om een algoritme te bedenken die erg grote getallen kan delen door andere grote getallen (wat natuurlijk allang gedaan is)?
Die getallen zijn IMMENS groot, als je simpel een deler probeert te vinden door ze allemaal te gaan proberen ben je echt JAREN bezig.Ik zie even niet waarom een programma veel geheugenruimte nodig heeft om dat soort dingen uit te rekeken. Ook niet waarom dat zo extreem lang zou duren (215.000 computers in 1 jaar = 1 computer in 215.000 jaar). En waarom zou je zelf naar priemgetallen zoeken? Dat hebben ze bij de RSA al voor ons gedaan: die komen wel uit die deling rollen. 't Is te laat om na te denken, dus ik zal er wel naast zitten.
Wat wij hier dus al hebben uitgeschreven is welke getallen je kunt overslaan, dat scheelt een hoop tijd. Hier is idd niet veel geheugen voor nodig.
De snelste methode die bekend is gebruikt een gigantisch grote matrix, en DAAR is al dat geheugen voor nodig. Over die methode hebben behoorlijk wat slimme mensen over nagedacht, dus ga niet denken dat die van ons ook maar in de buurt komt van die snelheid
Voordeel van onze methode is wel dat het makkelijk te distributen is en dat er weinig geheugen voor nodig is
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
[miereneukmode]Op donderdag 01 november 2001 01:57 schreef Explore het volgende:De RSA-code is dus een priemgetal wat het product is van de twee gezochte factoren (ook priemgetallen), right?
de RSA-code zelf is dus geen priemgetal (want het is deelbaar door de gezochte getallen)
[/miereneukmode]
Verwijderd
Wrong.Op donderdag 01 november 2001 01:57 schreef Explore het volgende:
De RSA-code is dus een priemgetal wat het product is van de twee gezochte factoren (ook priemgetallen), right?
Ik zie dat er hier geprobeerd wordt om die code te ontbinden in priemfactoren door die te benaderen als:
C = P1 * P2
P1 = g + d
P2 = g - d
waarbij:
g = (P1 + P2) / 2
g > d
dan krijg je dus inderdaad:
C = (g + d) * (g - d) = g2 - d2 =>
d = (g2 - C)1/2
Maar dat betekent dat je een functie moet schrijven die uit de RSA-code C een middelwaarde g berekent, dus:
f(C) = g of nog beter f(C) = g2
Het probleem bij het schrijven van die functie is dat er in de verhouding tussen C en g geen patroon te bekennen is, ze is even onvoorspelbaar als de verdeling van de priemgetallen over de natuurlijke getallen zelf. Je bent dus nog even ver van huis.
<edit>
Als je dit echt serieus wilt aanpakken zou ik een zg. MPQS (Multiple Polynomial Quadratic Sieve) of een NFS (Number Field Sieve) proberen te implementeren, dan heb je nog enige hoop. RSA-129 is gekraakt met een PPMPQS, RSA-140 met een NFS.
</edit>
gewoon alle priemgetallen tot grote getal/3 in db stoppen en dan query: select x,y from priem where x*y=grote getal;
is dat nou zo moeilijk?
[/lol]
Volgens mij is dit wel goed:
Je neemt alle getallen tot de helft van het getal, en dan alle de getallen eindigend op (1 of 7) en (3 of 9).
Dus je hoeft maar 2 eindcijfers te controleren, dat betekent dat je 1/10 aantal getallen van het gehele getal moet controleren. Kan het met minder?
Hier had uw advertentie kunnen staan :).
Omdat we er wel een distributed programma van willen maken, maar niet een server hebben waarop je gewone c++ of vb programma's kan draaien..Op donderdag 01 november 2001 01:33 schreef OiSyN het volgende:
waarom cgi of asp
.edit: waarom webscripting
Hier had uw advertentie kunnen staan :).
Ow? Hebben we dat nietOp donderdag 01 november 2001 07:47 schreef rjsomeone het volgende:
Omdat we er wel een distributed programma van willen maken, maar niet een server hebben waarop je gewone c++ of vb programma's kan draaien..
Er zijn hier heel wat tweakers met hun eigen server ergens in een rek staan. En nog VEEL meer met een servertje thuis
[flame mode]
Of je er VB op kan draaien is inderdaad te betwijfelen. Een windows server zonder dat je direct bij de resetknop kan is mijns inziens een slecht idee. Tenzij je elk weekeinde down wilt zijn
[/flame mode]
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
Hm ok, maar wat is er mis met een cgi'tje? Stabiel redelijk snel ook... en het uitreken progje in java?Op donderdag 01 november 2001 07:52 schreef Gerco het volgende:
[..]
Ow? Hebben we dat niet
Er zijn hier heel wat tweakers met hun eigen server ergens in een rek staan. En nog VEEL meer met een servertje thuis
[flame mode]
Of je er VB op kan draaien is inderdaad te betwijfelen. Een windows server zonder dat je direct bij de resetknop kan is mijns inziens een slecht idee. Tenzij je elk weekeinde down wilt zijn
[/flame mode]
Btw.. als we niet gelijk de moeilijkste doen, maar ff simpel beginnen
Hier had uw advertentie kunnen staan :).
Ja, dat lag aan de tijd... *YAWN* Ik bedoel, ik zeg het notabene zelf:marcusk:
[miereneukmode]
de RSA-code zelf is dus geen priemgetal (want het is deelbaar door de gezochte getallen)
[/miereneukmode]
Maargoed, dan zat ik er toch niet naast... Wonderbaarlijk!Op donderdag 01 november 2001 01:57 schreef Explore het volgende:
Ik zal er wel niks van begrepen hebben, maar het is toch zo dat als je 2 priemgetallen met elkaar vermenigvuldigd, dat het product (produkt?) alleen deelbaar is door de 2 gezochte getallen en 1 en de gevonden uitkomst zelf.
[ specs ] [ Tweaker gallery ]
Precies ja. Maar ZO brute force zou ik het niet aanpakken. Het is verder wel het idee.Op donderdag 01 november 2001 02:12 schreef Aetje het volgende:
*gaap*
Stap 1: Defineer een integer type met een zodoende lengte dat het getal er in past. Gebruik dit integer type voor alle berekeningen met het getal. Daarna is het gewoon loopen.
temp=1;
While (getal/2!=temp){
temp++;
if (getal%temp==0) {
if checkprime(temp) if checkprime(getal/temp) gevonden(temp,getal/temp);
}
}
En dan maar laten lopen. Ps procedures die niet ingevuld zijn zijn niet zo moeilijk. (checkprime-> controleert of getalletje een prime is (slaat even getallen over, rest is gewoon brute force checking) en gevonden is uitvoer.
Wat ik dus niet vat he... Wat men zegt is dat het met brute-force erg lang duurt. Maar ik neem aan dat die 2 getallen daadwerkelijk bestaan. Stel nou dat je ze toevallig (random?) vind?
[ specs ] [ Tweaker gallery ]
Dat zou opzich wel kunnen, misschien is een van de priemgetallen wel een getal onder de 100, of onder de 1000, dan hebben we 't getal gevonden in 1 minuut ongeveer.. Alleen is de kans erop heel klein...Op donderdag 01 november 2001 08:32 schreef Explore het volgende:
[..]
Precies ja. Maar ZO brute force zou ik het niet aanpakken. Het is verder wel het idee.
Wat ik dus niet vat he... Wat men zegt is dat het met brute-force erg lang duurt. Maar ik neem aan dat die 2 getallen daadwerkelijk bestaan. Stel nou dat je ze toevallig (random?) vind?
Hier had uw advertentie kunnen staan :).
Ja, dat besef ik me wel weer... Maar als jullie zo'n ding willen maken zou ik haast willen suggereren om met elk 'paketje' een paar random getallen mee te sturen. Stel je voor...rjsomeone:
Dat zou opzich wel kunnen, misschien is een van de priemgetallen wel een getal onder de 100, of onder de 1000, dan hebben we 't getal gevonden in 1 minuut ongeveer.. Alleen is de kans erop heel klein...
Hoe dan ook. Ik zie nog niet helemaal voor ogen hoe zo'n programmatje er uit ziet wat met zulke grote getallen kan rekenen. Maar ik kan me wel voorstellen dat 1 deling niet erg lang duurt. Een fractie van een seconde bv. Met een combinatie van brute-force, getallen er uit shiften die onmogelijk een goed antwoord op kunnen leveren en een beetje geluk kom je een heel eind...
* Explore gaat later vandaag toch proberen uit te rekenen hoe lang zoiets zou duren.
Ja, ik heb wat berekeningen gezien, maar ik ben pas overtuigd als ik zelf tot zo'n uitkomst kom.
[ specs ] [ Tweaker gallery ]
Verwijderd
Beetje veel overbodigheid. Na if(getal%temp==0) weet je al of je 1 van de priemgetallen hebt.Op donderdag 01 november 2001 02:12 schreef Aetje het volgende:
temp=1;
While (getal/2!=temp)
{
temp++;
if (getal%temp==0)
{
if checkprime(temp)
if checkprime(getal/temp)
gevonden(temp,getal/temp);
}
}
[..]
Verwijderd
Juist als je zo ontzettend veel berekeningen moet doen is het mega belangrijk dat je algoritme optimaal is (geen overbodige berekeningen, beginnen met getallen die hoge verwachtingen hebben, etc.). Alle verloren tijd met uitdenken haal je tijdens die weken dat de boel loopt to weer in.Op donderdag 01 november 2001 08:46 schreef Explore het volgende:
[..]
Hoe dan ook. Ik zie nog niet helemaal voor ogen hoe zo'n programmatje er uit ziet wat met zulke grote getallen kan rekenen. Maar ik kan me wel voorstellen dat 1 deling niet erg lang duurt. Een fractie van een seconde bv. Met een combinatie van brute-force, getallen er uit shiften die onmogelijk een goed antwoord op kunnen leveren en een beetje geluk kom je een heel eind...
Verwijderd
1. alle priemgetallen af gaan totdat je de juiste heb.
2. zoeken hoe ver die priemgetallen uit elkaar liggen.
1 heeft waarschijnlijk als voordelen dat het sneller is, en dat de code makkelijker te maken is.
2 heeft als voordelen dat je maar 1 formule nodig hebt, dat het makkelijker te distrubueren is, dat je minder database ruimte nodig heb en dat je er makkelijker random pakketjes mee kunt kraken (voor als de keyserver dood is).
Persoonlijk ben ik voor idee 2. (Voor de rede zie eerder in deze thread
Ja, maar hebben we dan al iets, dat een integer aan kan van 600 bytesOp donderdag 01 november 2001 08:58 schreef GHOst. het volgende:
ok. we hebben in dit draadje 2 methodes gezien.
1. alle priemgetallen af gaan totdat je de juiste heb.
2. zoeken hoe ver die priemgetallen uit elkaar liggen.
1 heeft waarschijnlijk als voordelen dat het sneller is, en dat de code makkelijker te maken is.
2 heeft als voordelen dat je maar 1 formule nodig hebt, dat het makkelijker te distrubueren is, dat je minder database ruimte nodig heb en dat je er makkelijker random pakketjes mee kunt kraken (voor als de keyserver dood is).
Persoonlijk ben ik voor idee 2. (Voor de rede zie eerder in deze thread)
3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line
Check de volgende site maar even :
http://www.geocities.com/ResearchTriangle/Thinktank/2434/prime/primenumbers.html
Alle prime nummers tot 6 miljoen, nou ik denk dat alle twee de nummer daar wel in zullen zitten.
3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line
dat weet je niet, voor hetzelfde geld, is de ene 3 en de ander 32458742342392398 ofzoOp donderdag 01 november 2001 09:18 schreef ronaldmathies het volgende:
Waarom gaat iedereen hier elke keer die prime berekening neerzetten, je gebruikt toch gewoon een file die deze nummers bevat die zijn overal te downloaden :
Check de volgende site maar even :
http://www.geocities.com/ResearchTriangle/Thinktank/2434/prime/primenumbers.html
Alle prime nummers tot 6 miljoen, nou ik denk dat alle twee de nummer daar wel in zullen zitten.
ff voor de lol:Op donderdag 01 november 2001 09:18 schreef ronaldmathies het volgende:
Alle prime nummers tot 6 miljoen, nou ik denk dat alle twee de nummer daar wel in zullen zitten.
stel A en B zijn beide priemgetallen van de ordegrootte 10^6, vermenigvuldig A met B en je krijgt een getal van de orde 10^12, heeft dat 174 cijfers?
Je zult priemgetallen van de orde 10^80 ofzo krijgen (of 3 en 10^173 ofzo
Ik geloof toch dat een aantal mensen hier de omvang van het probleem niet helemaal begrijpen.
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
Vierkants wortel = X^0,5
En dat komt van: X^(1/2) omgekeerde van wortel X^2
echter als je um gaat verkleinen gebeurd er dit:
RSA^0,5 = (PriemA * PriemB)^0,5
Dus ik vraag me af: Je verkleint alleen de getallen... verdwijnt je preciesie niet? Want anders kun je het getal nog veeeeeeeeeeeeeeeeeeeel kleiner maken:
<Geniaal idee mode>
Als je als de wortel deler nou is een priem getal neemt...
En dan een heel groot priemgetal neemt en ze dan afgaat?
(Weet ook niet of het zin heeft... maar staat wel leuk)
RSA^(1/13) = (PriemA * PriemB)^(1/13)
</Geniaal idee mode>
Steun Elkaar, Kopieer Nederlands Waar!
Verwijderd
Ik denk het niet hoor. Een van de priemgetallen ligt iig tussen 1 en 5 E 89. Reken zelf maar uit dat 9 miljoen slechts een schijntje is vergeleken met 5E89.Op donderdag 01 november 2001 09:18 schreef ronaldmathies het volgende:
Waarom gaat iedereen hier elke keer die prime berekening neerzetten, je gebruikt toch gewoon een file die deze nummers bevat die zijn overal te downloaden :
Check de volgende site maar even :
http://www.geocities.com/ResearchTriangle/Thinktank/2434/prime/primenumbers.html
Alle prime nummers tot 6 miljoen, nou ik denk dat alle twee de nummer daar wel in zullen zitten.
Verwijderd
dan zit 3 toch bij de getallen die je hebt?Op donderdag 01 november 2001 09:24 schreef KixAss456 het volgende:
[..]
dat weet je niet, voor hetzelfde geld, is de ene 3 en de ander 32458742342392398 ofzo
maar 6.000.000^2 = 36.000.000.000.000 < de code die we zoeken (en niet zo'n beetje ook). Grotere priemgetallen uitrekenen kost al veel tijd en/of heel erg veel geheugen.
Ja en nee. Om een getal van 600 bytes aan te kunnen, kyn je denk ik het beste "handmatig" gaan rekenen. Hiermee bedoel ik een array van integers pakken, en daarin op iedere plaats in het array een getal te plaatsen wat tussen de 0 en de 9 zit (inclusief) en daarmee gaan rekenen. Het is misschien veel werk en moeilijk te maken, maar dat is beter dan niets.Op donderdag 01 november 2001 09:16 schreef KixAss456 het volgende:
[..]
Ja, maar hebben we dan al iets, dat een integer aan kan van 600 bytes
En waarom toch steeds dat grootste getal? als we het kleinste getal weten te kraken is dat toch ook al goed? dan hebben we in ieder geval bewezen dat we het kunnen. En dan kunnen we vanzelf doorgaan met grotere getallen.
Jep, die kleine kan ook, ik gebruikte alleen ff die grote als voorbeeldOp donderdag 01 november 2001 09:48 schreef GHOst. het volgende:
[..]
dan zit 3 toch bij de getallen die je hebt?
maar 6.000.000^2 = 36.000.000.000.000 < de code die we zoeken (en niet zo'n beetje ook). Grotere priemgetallen uitrekenen kost al veel tijd en/of heel erg veel geheugen.
[..]
Ja en nee. Om een getal van 600 bytes aan te kunnen, kyn je denk ik het beste "handmatig" gaan rekenen. Hiermee bedoel ik een array van integers pakken, en daarin op iedere plaats in het array een getal te plaatsen wat tussen de 0 en de 9 zit (inclusief) en daarmee gaan rekenen. Het is misschien veel werk en moeilijk te maken, maar dat is beter dan niets.
En waarom toch steeds dat grootste getal? als we het kleinste getal weten te kraken is dat toch ook al goed? dan hebben we in ieder geval bewezen dat we het kunnen. En dan kunnen we vanzelf doorgaan met grotere getallen.
Maar voor de rest, het moet werken (in theorie
Dat denk ik niet. Dat geeft maximaal een getal 36*10^12 en dat is "iets" kleiner dan het gezochte produkt. Een factor 10^588 ongeveer.Op donderdag 01 november 2001 09:18 schreef ronaldmathies het volgende:
Waarom gaat iedereen hier elke keer die prime berekening neerzetten, je gebruikt toch gewoon een file die deze nummers bevat die zijn overal te downloaden :
Check de volgende site maar even :
http://www.geocities.com/ResearchTriangle/Thinktank/2434/prime/primenumbers.html
Alle prime nummers tot 6 miljoen, nou ik denk dat alle twee de nummer daar wel in zullen zitten.
Afgezien daarvan: het aanmaken van een file met alle priemen tot 6 miljoen kost hier 0,50 sec op een 500Mhz Linux bak. Ik weet niet hoe snel jouw internet verbinding is, maar de file is 3213276 bytes groot, dus als jij 6MB/s over kan pompen...
Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.
Dat weet ik wel: 32458742342392398 is geen priemgetal.KixAss456:
dat weet je niet, voor hetzelfde geld, is de ene 3 en de ander 32458742342392398 ofzo
Maar rondaldmathies moet z'n naam meer eer aan gaan doen. 6 miljoen zijn 7 cijfers. Leuk, maar we hebben het hier over een getal van meer dan 700 cijfers! Dus vergeet die priemgetallen nou maar. Het uitrekenen van zulke grote priemgetallen duurt al een eeuwigheid. Dat is niet de methode...
[ specs ] [ Tweaker gallery ]
Wat denk je, dat is toch al een ziljoen maal gemaakt?Op donderdag 01 november 2001 09:16 schreef KixAss456 het volgende:
[..]
Ja, maar hebben we dan al iets, dat een integer aan kan van 600 bytes
Zoek maar eens op Arbitrary Precision Math Library ofzo.
Google's "ik ga er voor" levert er al eentje in c, die uit 1995 stamt en tot 1600 decimalen gaat.
Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.
Heb er met mijn computer ongeveer een uur of 4 over gedaan om die getallen te vinden. ( P2 - 300Mhz )
Heb alleen verder geen tijd er meer aanbesteed, denk dat ik het toch eens moet doen
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Wat bedoel je?Op donderdag 01 november 2001 10:51 schreef dusty het volgende:
Heb ergens nog wel een stuk of 7 priem getallen die behoren bij het 2e complexe getal. ( Die van $20.000 beloning geloof ik... )
Heb er met mijn computer ongeveer een uur of 4 over gedaan om die getallen te vinden. ( P2 - 300Mhz )
Heb alleen verder geen tijd er meer aanbesteed, denk dat ik het toch eens moet doen
Hier had uw advertentie kunnen staan :).
Methode 1 kan 1 op 10, (verhouding aantal te onderzoeken egtallen: grootte rsa getal)Op donderdag 01 november 2001 08:58 schreef GHOst. het volgende:
ok. we hebben in dit draadje 2 methodes gezien.
1. alle priemgetallen af gaan totdat je de juiste heb.
2. zoeken hoe ver die priemgetallen uit elkaar liggen.
1 heeft waarschijnlijk als voordelen dat het sneller is, en dat de code makkelijker te maken is.
2 heeft als voordelen dat je maar 1 formule nodig hebt, dat het makkelijker te distrubueren is, dat je minder database ruimte nodig heb en dat je er makkelijker random pakketjes mee kunt kraken (voor als de keyserver dood is).
Persoonlijk ben ik voor idee 2. (Voor de rede zie eerder in deze thread)
Methode 2 kan volgens mij nog kleiner.. omdat zoals ik eerder heb gezegd, je een kleiner gebied dan het halve gebied van het rsa getal moet uitzoeken.
Ik ga dus ook voor methode 2, nu alleen nog verder uitzoeken hoe we die zo snel mogelijk maken...
Hier had uw advertentie kunnen staan :).
Dat men verkeerde algortimen wil gebruiken hier, Dat men de RSA opdracht niet helemaal begrepen heeft.Op donderdag 01 november 2001 10:55 schreef rjsomeone het volgende:
Wat bedoel je?
Het getal van de RSA is opgebouwd uit verschillende priemgetallen. Dus het kunnen er ook MEER dan 2 zijn.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Ja? Hm.. dat is misschien wel een handige opmerking jaOp donderdag 01 november 2001 10:58 schreef dusty het volgende:
[..]
Dat men verkeerde algortimen wil gebruiken hier, Dat men de RSA opdracht niet helemaal begrepen heeft.
Het getal van de RSA is opgebouwd uit verschillende priemgetallen. Dus het kunnen er ook MEER dan 2 zijn.
Als dat zo is wordt het volgens mij alleen maar makkelijker, je hoeft namelijk kleinere getallen te onderzoeken. Kan je een aantal van die priemen posten die je gevonden hebt?
Hier had uw advertentie kunnen staan :).
Ik zla kijken of ik de priem getallen nog thuis heb liggen en of ik ut niet zelf wil afmakenOp donderdag 01 november 2001 11:00 schreef rjsomeone het volgende:
Ja? Hm.. dat is misschien wel een handige opmerking ja
Als dat zo is wordt het volgens mij alleen maar makkelijker, je hoeft namelijk kleinere getallen te onderzoeken. Kan je een aantal van die priemen posten die je gevonden hebt?
Ik geloof dat de 4e priem getal al iets van 7 cijfers had ofzo.. dus alleen de "kleinere" getallen, vrees dat je je daarop verkijkt
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Ja, je hebt gelijk.. alleen of het nou makkelijker of moeilijker wordt weet ik niet.. want het distributed idee van dit project komt dan een beetje in gevaar..Op donderdag 01 november 2001 10:58 schreef dusty het volgende:
[..]
Dat men verkeerde algortimen wil gebruiken hier, Dat men de RSA opdracht niet helemaal begrepen heeft.
Het getal van de RSA is opgebouwd uit verschillende priemgetallen. Dus het kunnen er ook MEER dan 2 zijn.
stel je hebt het getal 4641 (is product van 3,7,13 en 17)
Hoe kan je dit distributed berekenen? Nog steeds door iedereen pakketjes mee te geven met verschillende getallen? Of is het niet meer mogelijk dit "los van elkaar" te berekenen. Moet je dit nu in volgorde bereken, dat je bij 2 begint, en zo omhoog telt totdat je een factor gevonden hebt, het rsa getal delen door die factor, en voor die uitkomst weer een factor zoeken, beginnend bij 2 en dan omhoog?
Hier had uw advertentie kunnen staan :).
Verwijderd
Nee elk priemgetal dat een deler is van de code is uniek.Op donderdag 01 november 2001 11:10 schreef rjsomeone het volgende:
[..]
Ja, je hebt gelijk.. alleen of het nou makkelijker of moeilijker wordt weet ik niet.. want het distributed idee van dit project komt dan een beetje in gevaar..
stel je hebt het getal 4641 (is product van 3,7,13 en 17)
Hoe kan je dit distributed berekenen? Nog steeds door iedereen pakketjes mee te geven met verschillende getallen? Of is het niet meer mogelijk dit "los van elkaar" te berekenen. Moet je dit nu in volgorde bereken, dat je bij 2 begint, en zo omhoog telt totdat je een factor gevonden hebt, het rsa getal delen door die factor, en voor die uitkomst weer een factor zoeken, beginnend bij 2 en dan omhoog?
Als iemand alle getallen tussen 0 en 1.000.000 gevonden heeft die een deler zijn van de code dan hoeft iemand anders dat niet meer te doen.
Verwijderd
Van de RSA site:Op donderdag 01 november 2001 10:58 schreef dusty het volgende:
[..]
Dat men verkeerde algortimen wil gebruiken hier, Dat men de RSA opdracht niet helemaal begrepen heeft.
Het getal van de RSA is opgebouwd uit verschillende priemgetallen. Dus het kunnen er ook MEER dan 2 zijn.
The RSA Factoring challenge is an effort, sponsored by RSA Laboratories, to learn about the actual difficulty of factoring large numbers of the type used in RSA keys. A set of eight challenge numbers, ranging in size from 576 bits to 2048 bits is posted here. Each number is the product of two large primes, similar to the modulus of an RSA key pair
1
2
3
4
5
6
7
8
9
10
11
12
| 3 7 13 17 21 39 51 91 119 221 273 357 |
Bij mijn weten gaat het toch echt om 2 priemgetallen en niet meer dan 2 getallen!
Hier een simpel stukje brute-force PHP code ('k was lui) om dat soort dingen uit te rekenen:
1
2
3
4
5
6
7
8
9
| <? $code = 4641; echo "Code to crack: $code<br>Factors:<br>"; $dcode = round(4641/10); if ($dcode % 2 == 0) $dcode++; for ($i = 3; $i <= $dcode; $i += 2) { if ($code % $i == 0) echo "$i<br>"; } ?> |
Pak zelf eens 2 priemgetallen, vermenigvuldig die met elkaar en voer die uitkomst in in bovenstaand programma. Dat ding spuugt ze dan weer uit. Niet meer en niet minder.
Edit: hm, toch niet. Stukje code werkt niet goed.
[ specs ] [ Tweaker gallery ]
'k ben weer lekker wakkerOp donderdag 01 november 2001 11:27 schreef GHOst. het volgende:
[..]
Van de RSA site:
[..]
Hier had uw advertentie kunnen staan :).
Verwijderd
als je al deelt door 3 en 7 kun je niet meer delen door 21.Op donderdag 01 november 2001 11:29 schreef Explore het volgende:
Dit gaat nergens over. Volgens mijn berekeningen is 4641 deelbaar door het volgende getallen:
code:
1 2 3 4 5 6 7 8 9 10 11 12 3 7 13 17 21 39 51 91 119 221 273 357
[..]
om het ff anders te stellen:
geen priem: 21, 39, 51, 91, 119, 221,273, 357
echte delers (en dus priemen): 3, 7, 13, 17
Bij mijn weten zijn 21,39,51,91,119,221,273 en 357 allen opgebouwd uit de 3,7,13 en 17 priem getallenOp donderdag 01 november 2001 11:29 schreef Explore het volgende:
Dit gaat nergens over. Volgens mijn berekeningen is 4641 deelbaar door het volgende getallen:
code:
1 2 3 4 5 6 7 8 9 10 11 12 3 7 13 17 21 39 51 91 119 221 273 357
Bij mijn weten gaat het toch echt om 2 priemgetallen en niet meer dan 2 getallen!
Bovendien op de RSA site geven ze een mooie voorbeeld. (jawel lezen IS moeilijk)
Maar ga jij maar lekker zoeken naar 2 priem getallen die samen de oplossing vormen hoorA non-prime, or composite number, can be written as the product of smaller primes, known as its prime factors. 665, for example is the product of the primes 5, 7, and 19. A number is said to be factored when all of its prime factors are identified. As the size of the number increases, the difficulty of factoring increases rapidly.
Zoals ik al zei, bij die van de $20.000 had ik de eerste 7 priem getallen die erbij hoorden al gevonden. Dus ik WEET dat ik gelijk heb.
mmm.. fladder was sneller
Of was het nou andersom?
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Leuk, maar die RSA-code is alleen deelbaar door 2 priemgetallen. Ter demonstratie nu het volgende proggy:Op donderdag 01 november 2001 11:46 schreef fladder het volgende:
[..]
als je al deelt door 3 en 7 kun je niet meer delen door 21.
om het ff anders te stellen:
geen priem: 21, 39, 51, 91, 119, 221,273, 357
echte delers (en dus priemen): 3, 7, 13, 17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <? <html> <head> <title>Factors of Prime</title> </head> <body> <div id="lyrI" style="position:absolute"></div> <br> <?php $code = 195992431; echo "Code to crack: $code<br>"; $dcode = round($code/10); if ($dcode % 2 == 0) $dcode++; echo "Search to: $dcode<br>Factors:"; $j = 0; for ($i = 3; $i <= $dcode; $i += 2) { if (($code % $i) == 0) { echo "$i and ".$code/$i."<br>"; exit; } if (($j % 10) == 0) echo "<script>lyrI.innerHTML=$i</script>\n"; flush(); $j++; } ?> </body> </html> ?> |
De 2 getallen die hier uitrollen zijn inderdaad de 2 priemgetallen die ik met elkaar vermenigvuldigd heb om aan 195992431 te komen. PHP choked bij grotere getallen. Het zaakje klopt dan niet meer. Maar dat is ook maar effe ter demonstratie...
[ specs ] [ Tweaker gallery ]
hier heb jij dan een uitdaging: Quote jij eens het gedeelte van de RSA website waar staat dat het maar 2 priem getallen zijnOp donderdag 01 november 2001 11:53 schreef Explore het volgende:
Leuk, maar die RSA-code is alleen deelbaar door 2 priemgetallen. Ter demonstratie nu het volgende proggy:
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Zie post van Ghost hierboven...Op donderdag 01 november 2001 11:55 schreef dusty het volgende:
[..]
hier heb jij dan een uitdaging: Quote jij eens het gedeelte van de RSA website waar staat dat het maar 2 priem getallen zijn. Ohja vergeet niet de link erbij te geven. Veel zoek plezier.
[ specs ] [ Tweaker gallery ]
Verwijderd
How do I submit a completed factorization?
If you have completed the factorization of a challenge number, you must submit the result to RSA Labs for verification. A submission form is available at http://www.rsasecurity.com/go/factorization.html.
Enter the name(s) of the submitter(s), the challenge number factored, the two factors, and an e-mail address at which RSA Labs may contact you. In addition, please enter a brief description of the method and resources used in the factorization.
En voor de mensen die al een heleboel factoren hebben:
kijk je algoritme nog maar eens goed na
http://www.rsasecurity.com/rsalabs/challenges/factoring/faq.html#Submit
Verwijderd
zeer sterk reken programma die met zulke grote getallen om kan gaan.
matrix maken met alle priemgetallen tussen 2 en te kraken getal/2. (hopelijk kan je deze matrix downloaden ergens)
getal delen door matrix = nieuwe matrix. (als je de priemmatrix hebt is dit zo gebeurt, is de matrix te groot kan ik deze in stukken hakken)
in de nieuwe matrix zitten 2 priem getallen. precies de 2 die we zoeken >>>> vergelijk priemmatrix met nieuwe matrix om de priem getallen te lokaliseren...
nee maar hopen dat de priemmatrix niet te groot wordt... (hoe groter de getallen hoe minder priemgetallen)
edit>
overigens kan je priemmatrix kleiner maken door naar het laatste cijfer te kijken van het te kraken getal.
de nieuwe matrix kan kleiner gemaakt worden door alleen integers in die matrix op te nemen.
</edit>
Granted. Okay, vaag dat ze dan verschillende voorbeelden hadden gegeven waarbij meer dan twee factoren werdt gebruikt.Op donderdag 01 november 2001 12:18 schreef fladder het volgende:
Voor degenen die nog steeds twijfelen:
[..]
edit:
En voor de mensen die al een heleboel factoren hebben:
kijk je algoritme nog maar eens goed na
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Verwijderd
Euhm, en waar wil je die matrix laten?Op donderdag 01 november 2001 12:39 schreef betweter het volgende:
ik denk dat ik dit maar eens in matlab ga doen...
zeer sterk reken programma die met zulke grote getallen om kan gaan.
matrix maken met alle priemgetallen tussen 2 en te kraken getal/2. (hopelijk kan je deze matrix downloaden ergens)
getal delen door matrix = nieuwe matrix. (als je de priemmatrix hebt is dit zo gebeurt, is de matrix te groot kan ik deze in stukken hakken)
in de nieuwe matrix zitten 2 priem getallen. precies de 2 die we zoeken >>>> vergelijk priemmatrix met nieuwe matrix om de priem getallen te lokaliseren...
nee maar hopen dat de priemmatrix niet te groot wordt... (hoe groter de getallen hoe minder priemgetallen)
trouwens priemen tot wortel(getal) is wel genoeg lijkt me, en dan nog geldt:
wortel(getal) ongeveer 10^87
aantal priemen tot daar = ongeveer (x/log(x)) = 2.5^38
gemiddelde grootte van een priem = ongeveer 10^43
een priem kost dus gemiddeld ongeveer 143 bits.
zo'n matrix kost je in het meest geoptimaliseerde geval
143*2.5^38 bits = ongeveer 4 * 10^30 gigabyte
Ik heb vast wel ergens een rekenfout maar die matrix gaat VEEEEEEL plek kosten
Verwijderd
De recente RSA challenges zijn gewonnen door algoritmes uit de NFS en de MPQS familie, dus het lijkt me handig als die algoritmes eens eerst bestudeert (Google search, aardig startpunt). En ja, dit is complexe wiskunde (getaltheorie).
sorry
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
tuurlijk niet, wij tweakers zijn eigenwijs, wij verzinnen ons eigen algoritme dat vast veel sneller is dan diegenen die bedacht zijn door een zooi erg slimme koppen die thuis zijn in de wiskunde!Op donderdag 01 november 2001 13:44 schreef mietje het volgende:
/me post het zelfde nog maar eens.
De recente RSA challenges zijn gewonnen door algoritmes uit de NFS en de MPQS familie, dus het lijkt me handig als die algoritmes eens eerst bestudeert (Google search, aardig startpunt). En ja, dit is complexe wiskunde (getaltheorie).
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
de volledige matrix is inderdaad niet nodig... alleen priemen tot wortel en daar een matrix van maken. echter om de het 2de getal te vinden is wel de volledige priemmatrix nodig. overigens volgens mij zijn het niet zoveel priemgetallen als jij zegt. (de wortel van 10^600 is 10^300. volgens mij slaat de x/log(x) echter helemaal nergens op... (10^300/300= 3.1*10^297 priemgetallen ik dacht het niet... veel minder; 10/1 = 10 -->> 1 tot 10 priem getallen? 100/2 = 50 >>> 50 priemgetallen onder de 100??? >>> 100/(priemgetal 2) is 50 dus alles wat niet deelbaar is door 2 een priemgetal???; volgens mij klopt er geen hout van je berekening, alhoewel ik wel bang ben dat het aantal priemgetallen iets te groot wordt om op te slaan op mijn 40 gb schijfje)Op donderdag 01 november 2001 13:01 schreef fladder het volgende:
[..]
Euhm, en waar wil je die matrix laten?
trouwens priemen tot wortel(getal) is wel genoeg lijkt me, en dan nog geldt:
wortel(getal) ongeveer 10^87
aantal priemen tot daar = ongeveer (x/log(x)) = 2.5^38
gemiddelde grootte van een priem = ongeveer 10^43
een priem kost dus gemiddeld ongeveer 143 bits.
zo'n matrix kost je in het meest geoptimaliseerde geval
143*2.5^38 bits = ongeveer 4 * 10^30 gigabyte
Ik heb vast wel ergens een rekenfout maar die matrix gaat VEEEEEEL plek kosten
Kwestie van een nieuwe Theorie zien te vinden en dat doe je dus niet door de algoritmen van iemand anders te gebruiken. Dan loop je mee met de andere tig mensen die die algoritme al gebruiken om het antwoord te zoeken, veel leuker is om proberen een andere methode te vinden. Alleen op die manier zijn nieuwe ontdekkingen te vinden.Op donderdag 01 november 2001 13:59 schreef OiSyN het volgende:
tuurlijk niet, wij tweakers zijn eigenwijs, wij verzinnen ons eigen algoritme dat vast veel sneller is dan diegenen die bedacht zijn door een zooi erg slimme koppen die thuis zijn in de wiskunde!
Als je als 99e schaap bij een hek aankomt kan je kiezen, eroverheen springen zoals de eerste 98 hebben gedaan, omdat die methode werkt, of besluiten dat misschien het hek helemaal niet op slot zit en het gewoon open te doen.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Verwijderd
En weet je waarom het sneller is? Ten eertse wij maken het zooitje distributed, hangen er een DPC tag aan en laten duizenden mensen kraken. Ten tweede wij klokken overOp donderdag 01 november 2001 13:59 schreef OiSyN het volgende:
[..]
tuurlijk niet, wij tweakers zijn eigenwijs, wij verzinnen ons eigen algoritme dat vast veel sneller is dan diegenen die bedacht zijn door een zooi erg slimme koppen die thuis zijn in de wiskunde!
Maar ff serieus, die slimme koppen hebben misschien (waarschijnlijk) die methode die wij hebben bedacht al lang van de kaart geschoven. Maar dat wil niet zeggen dat het geen goede methode is. Wat op hun website staat is misschien wel een hele snelle methode, maar ik vind hem persoonlijk niet goed. Hoe wil je 200K+ PC's vinden met ieder 4GB aan ram?
Maar verder stel ik voor om zelf een programma in elkaar te draaien in java. Omdat dat platform onafhankelijk is, en vooral omdat dat de enige taal is die ik ken
De klasse die ik in gedachte heb even uitgelegd:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class VeryBigInt
{
private short[] getal;
private VeryBigInt wortel;
private boolean positief;
private boolean achterKomma; // indien dit getal ook nog
//iets achter de komma heeft
public VeryBigInt(String nummer){}
public VeryBigInt getWortel(){}
public VeryBigInt deel(VeryBigInt a){}
public VeryBigInt min(VeryBigInt a){}
public VeryBigInt plus(VeryBigInt a){}
public VeryBigInt keer(VeryBigInt a){}
public VeryBigInt macht(int a){}
private void correct()
} |
De methoden getWortel, min, plus, keer, macht en correct kan ik zelf wel maken, de methode deel heb ik wat meer moeite voor nodig. Maar met deze klasse kunnen we ongeveer alles wat ik nodig denk te hebben, en meer. Wat nu nog nodig is, is een plaats (server) om de bestanden op te zetten zodat andere mensen er ook mee kunnen werken. Wie kan "even" zo'n ding opzetten voor dit project?
Wellicht draai ik een programmatje in elkaar om een idee te krijgen van de tijd die nodig is om een fractie van de getallen te testen. Daarna zie ik wel verder. Ik blijf erbij dat het altijd mogelijk is dat je 'toevallig' het juiste getal vind (en dus ook de andere, wat sommige mensen blijkbaar nog steeds niet vatten). Al die theorien gaan uit van een worst-case scenario.
priem1 x priem2 = code
priem1 gevonden?
priem2 = code / priem1
Have fun...
[ specs ] [ Tweaker gallery ]
Op donderdag 01 november 2001 14:42 schreef GHOst. het volgende:
public class VeryBigInt
private boolean achterKomma; // indien dit getal ook nog iets achter de comma heeft
Wat klopt hier niet?
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!
Kijk, ik wil hier geen Java vs. C discussie opwekken, maar ik denk dat zelfs de javahova's hier op GoT het wel met mij eens zijn dat dit zo snel mogelijk moet gebeuren, dus low-level C, en het liefst nog pure assembly, voor de core
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Het wiskundige aspect van dit probleem is duizenden malen groter dan het technische aspect. De computer kan alles, helemaal met distributed technieken, dit is het probleem niet, als we uit het wiskundige gedeelte zijn, is een distributed systeem in een paar dagen opgezet met al die slimme programmeurs hier...
En dan nog, besef je wel dat RSA een schatting heeft gemaakt van het aantal computers dat nodig zijn en de hoeveelheid geheugen die hier dan voor nodig is, dit zijn geen kleine aantallen.
De RSA lacht zich rot dat er uberhaupt mensen zijn die er serieus werk van maken.
Rookworst zonder R is ook worst.
Verwijderd
ok uitleg:Op donderdag 01 november 2001 14:48 schreef Gerco het volgende:
[..]
![]()
Wat klopt hier niet?
Dit gaat uit van de methode
1
2
3
4
| g = (priem1+priem2)/2 d = g - (min(priem1,priem2)) sqrt(code+(d^2)) == geheel getal. enz.. |
Omdat je voor die sqrt een geheel getal nodig hebt, moet je dus kijken of er iets achter de komma staat. Omdat een int moet afronden, heb ik een boolean in het leven geroepen om te zeggen dat het afgerond is.
We hebben een begin nodig. Ik heb eerder in deze draad een oplossing aangedragen waarvoor je geen priemgetallen nodig heb. Een andere oplossing is om wel met priemgetallen te werken en ze een voor een af gaan totdat je de juiste hebt gevonden. Meer voorstellen om dit probleempje te tackelen heb ik hier nog niet gehoord, maar als jij zo graag een andere methode wilt horen zul je hem zelf moeten posten.Op donderdag 01 november 2001 14:53 schreef BezurK het volgende:
Mensen, ik denk niet dat het verstandig is om NU al heel stoer met source code te gaan gooien, in wat voor taal dan ook.
Het wiskundige aspect van dit probleem is duizenden malen groter dan het technische aspect. De computer kan alles, helemaal met distributed technieken, dit is het probleem niet, als we uit het wiskundige gedeelte zijn, is een distributed systeem in een paar dagen opgezet met al die slimme programmeurs hier...
En dan nog, besef je wel dat RSA een schatting heeft gemaakt van het aantal computers dat nodig zijn en de hoeveelheid geheugen die hier dan voor nodig is, dit zijn geen kleine aantallen.
De RSA lacht zich rot dat er uberhaupt mensen zijn die er serieus werk van maken.
Die schatting van RSA is gebaseerd op de snelste methode die hun kennen. Maar deze methode vraagt ongelovelijk veel geheugeruimte, en is dus niet beschikbaar voor ons.
Daarnaast heb ik het idee dat niet iedereen echt voortgang wil boeken. Lees deze draad maar eens door. Bijna iedereen valt terug op de methode van ieder priemgetal nachecken, terwijl dit toch echt geen optie is (zoek maar eens priemgetallen van 10^300 of groter).
Verwijderd
Ik koos als getal 552569(dit is een vermenigvuldiging van de priemgetallen 2039 en 271)
(2039*271)->M ==het getal aan de variabele M toekennen
(int (M^0,5))->B ==De afgeronde waarde van wortel M
toekennen aan B
(B/2)->F ==De helft van B toekennen aan F
if (int F=F) ==Als F geheel is
then (B-1)->B ==dan doe je B-1 zodat je zeker
weten een oneven getal
hebt dit is handig omdat je dan alle
even getallen over kan slaan
ifend == de if regel wordt afgesloten
0->X == aan de variabele X wordt 0toegekend
Lbl1== begin van de loop
(int (M/(B+X))->C==M wordt gedeeld door(B+X) en dan
afgerond en toegekend aan C
if (C*(B+X))=M== als C*(B+X)) gelijk is aan M
Then Locate 1,1,C== dan schrijf je C op(dit is het
priemgetal dat gezocht werd)
Ifend== if end
(X+2)->X== De X wordt met 2 verhoogd zodat
het volgende oneven B getak
ontstaat
goto1== ga naar 1 om het nog een keer te
proberen
Het komt eigenlijk op het volgende neer dus je neemt het getal daar neem je de wortel van(de wortel zit tussen de 2 priemgetallen in) en daarna ga je steeds HET getal delen door de wortel ervan+2. die plus 2 doe je omdat je dan de hele tijd deelt door een oneven getal.
Als je er geen wijs uit kan worden wil ik het ook wel mailen want echt netjes ziet het er zo niet uit
Dat lijkt mij ook de beste manier, maar hij kan nog iets geoptimaliseerd worden: je kan alle getallen eindigend op 5 ook weglaten.Op donderdag 01 november 2001 15:27 schreef wayeax het volgende:
Het lijkt me opzich een leuk idee en ik wil best wel helpen ook al ben ik een newbie wat betreft programeren. Dit is wat een uurtje knoeien op me rekenmachine opleverde en het werkt ook best snel vond ik (ik heb het alleen met kleine getallen getest omdat me rekenmachine er anders te lang over deed).
Ik koos als getal 552569(dit is een vermenigvuldiging van de priemgetallen 2039 en 271)
(2039*271)->M ==het getal aan de variabele M toekennen
(int (M^0,5))->B ==De afgeronde waarde van wortel M
toekennen aan B
(B/2)->F ==De helft van B toekennen aan F
if (int F=F) ==Als F geheel is
then (B-1)->B ==dan doe je B-1 zodat je zeker
weten een oneven getal
hebt dit is handig omdat je dan alle
even getallen over kan slaan
ifend == de if regel wordt afgesloten
0->X == aan de variabele X wordt 0toegekend
Lbl1== begin van de loop
(int (M/(B+X))->C==M wordt gedeeld door(B+X) en dan
afgerond en toegekend aan C
if (C*(B+X))=M== als C*(B+X)) gelijk is aan M
Then Locate 1,1,C== dan schrijf je C op(dit is het
priemgetal dat gezocht werd)
Ifend== if end
(X+2)->X== De X wordt met 2 verhoogd zodat
het volgende oneven B getak
ontstaat
goto1== ga naar 1 om het nog een keer te
proberen
Het komt eigenlijk op het volgende neer dus je neemt het getal daar neem je de wortel van(de wortel zit tussen de 2 priemgetallen in) en daarna ga je steeds HET getal delen door de wortel ervan+2. die plus 2 doe je omdat je dan de hele tijd deelt door een oneven getal.
Als je er geen wijs uit kan worden wil ik het ook wel mailen want echt netjes ziet het er zo niet uit
Hier had uw advertentie kunnen staan :).
Verwijderd
ja hallo, als we er echt superserieus aan gaan werken dan is de lol er snel afOp donderdag 01 november 2001 14:53 schreef BezurK het volgende:
Mensen, ik denk niet dat het verstandig is om NU al heel stoer met source code te gaan gooien, in wat voor taal dan ook.
Het wiskundige aspect van dit probleem is duizenden malen groter dan het technische aspect. De computer kan alles, helemaal met distributed technieken, dit is het probleem niet, als we uit het wiskundige gedeelte zijn, is een distributed systeem in een paar dagen opgezet met al die slimme programmeurs hier...
En dan nog, besef je wel dat RSA een schatting heeft gemaakt van het aantal computers dat nodig zijn en de hoeveelheid geheugen die hier dan voor nodig is, dit zijn geen kleine aantallen.
De RSA lacht zich rot dat er uberhaupt mensen zijn die er serieus werk van maken.
persoonlijk vind ik het wel lache dat wij zo inferieur bezig zijn, en ik weet zeker dat we die dingen ook nooit op gaan lossen voordat iemand anders met een antwoord komt, maar dat boeit me dus echt geen enkele flikker. Het lijkt me gewoon leuk om een distributed computing systeempje te maken, of het nou zinnig is of niet
Ik bedoel, ik had het idee voor mezelf ook allang afgeschreven omdat het gewoon absoluut niet haalbaar is, maar nu ik iedereen hier er zo lekker mee hoor discussieren denk ik ook van "what the hell, wat boeit het ook, we gaan het gewoon doen"
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
tweede priem is code/eersteOp donderdag 01 november 2001 14:32 schreef betweter het volgende:
de volledige matrix is inderdaad niet nodig... alleen priemen tot wortel en daar een matrix van maken. echter om de het 2de getal te vinden is wel de volledige priemmatrix nodig.
http://www.utm.edu/research/primes/howmany.shtmloverigens volgens mij zijn het niet zoveel priemgetallen als jij zegt. (de wortel van 10^600 is 10^300. volgens mij slaat de x/log(x) echter helemaal nergens op...
Sja het komt wel vaker voor dat benaderfuncties niet opgaan voor kleine getallen he. En de eerste 100 is niet echt representatief met de andere 10^80.(10^300/300= 3.1*10^297 priemgetallen ik dacht het niet... veel minder; 10/1 = 10 -->> 1 tot 10 priem getallen? 100/2 = 50 >>> 50 priemgetallen onder de 100??? >>> 100/(priemgetal 2) is 50 dus alles wat niet deelbaar is door 2 een priemgetal???; volgens mij klopt er geen hout van je berekening, alhoewel ik wel bang ben dat het aantal priemgetallen iets te groot wordt om op te slaan op mijn 40 gb schijfje)
Eneuh, lijkt me ook verstandig dat we het met z'n allen over dezelfde code gaan hebben. Misschien niet onpractisch om te beginnen bij de kleinste, nl. die van 174 digits.
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
| findprimes :: num -> [num]
findprimes a = divert a (afgerondewortel a)
afgerondewortel :: num -> num
afgerondewortel x = (y+1), if (y//2) = (y/2)
= y, otherwise
where y = round(sqrt(x))
divert :: num->num->[num]
divert teller noemer = [teller//noemer,noemer], if (teller % noemer) = 0
= divert teller (noemer+2), otherwise |
loopt als een treintje.
Ik noemde alleen maar Java in die zin, als je een server hebt en je maakt het geval in C dan is een port naar Java vrij gemakkelijk, dan heb je niet alleen eventuele Windows PC's maar ook de krachtige servers tot je beschikking, zoals Alpha's en Sun (En ja die heb ik hier staan waar het eventueel op zou kunnen draaien). Maar als ik deze discussie zie verlopen dan heb ik er zelf eigenlijk wijnig zin in om hier tijd in te gaan steken er word wild gediscuseerd maar niet bekeken hoe je zo'n algoritme zou moeten maken. Wat maakt mij het uit hoe groot het getal is, en in welke taal en hoe. Waar mij het om gaat is, hoe bedenk je een algoritme zodat je geen onnodige berekeningen gaat uitvoeren en zosnell mogelijk tot een resultaat kan komen. Want een oplossing als 3 * 7; 7 * 13; 7 * 3; 13 * 7 gaat natuurlijk nooit werken. Je moet ook voorkomen dat je geen dubbele berekeningen doet. Het is natuurlijk goed om van te voren te weten of het uberhoupt mogelijk is om zulke grote getallen op te slaan in een variabele waarbij het ook nog makkelijk rekenen is, maar wat heb je eraan als we totaal geen fatsoelijke algoritme hebben. Dan zou je inderdaad de algoritmes moeten bestuderen van andere bedrijfen zoals hierboven vermeld word, en kijken is dat mischien op een een of andere manier te optimaliseren. Het gaat er voor mij uiteindelijk ook niet om om te kunnen winnen maar meer om de uitdaging over het maken van zo'n server onderdeel met clients en het zo optimaal en correct te laten verlopen inclusief het algoritme.
3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line
Verwijderd
Ik koos dus als getal 552569(dit is een vermenigvuldiging van de priemgetallen 2039 en 271) als voorbeeld getal
het schreef gedrukte is commentaar de rest code
(2039*271)->M ==het getal aan de variabele M toekennen
(int (M^0,5))->B ==De afgeronde waarde van wortel M
toekennen aan B
(B/2)->F ==De helft van B toekennen aan F
if (int F=F) ==Als F geheel is
then (B-1)->B ==dan doe je B-1 zodat je zeker weten een oneven getal hebt dit is handig omdat je dan alle even getallen over kan slaan
ifend == de if regel wordt afgesloten
0->X == aan de variabele X wordt 0 toegekend
Lbl1 == begin van de loop
(int (M/(B+X))->C ==M wordt gedeeld door(B+X) en dan
afgerond en toegekend aan C
if (C*(B+X))=M == als C*(B+X)) gelijk is aan M
Then Locate 1,1,C == dan schrijf je C op(dit is het
priemgetal dat gezocht werd)
Ifend == if end
(X+2)->X == De X wordt met 2 verhoogd zodat het volgende oneven B getak ontstaat
goto1 == ga naar 1 om het nog een keer te proberen
Het komt eigenlijk op het volgende neer, je neemt HET getal daar neem je de wortel van(de wortel zit tussen de 2 priemgetallen in) en daarna ga je steeds HET getal delen door de wortel ervan+2. die plus 2 doe je omdat je dan de hele tijd deelt door een oneven getal.
Dat een getal met een vijf op het einde overbodig is wist ik wel maar omdat ik het op een rekemachine probeerde koste het meer tijd om de vijf eruit te halen dan om hem te laten zitten in het "echte" programma moet je de 5 er wel uit filteren natuurlijk.
Is er trouwens een manier om je Posting eerst te bekijken voordat je hem echt post zodat je kan zien of je lay out goed is? En is er een plek waar je all Tags kan vinden voor dit forum?
Naast de verstuur knop staat: bekijk berichtOp donderdag 01 november 2001 16:24 schreef wayeax het volgende:
Is er trouwens een manier om je Posting eerst te bekijken voordat je hem echt post zodat je kan zien of je lay out goed is?
Hier had uw advertentie kunnen staan :).
Voor jou:Op donderdag 01 november 2001 16:20 schreef ronaldmathies het volgende:
Voor sommige mensen hier :
Ik noemde alleen maar Java in die zin, als je een server hebt en je maakt het geval in C dan is een port naar Java vrij gemakkelijk, dan heb je niet alleen eventuele Windows PC's maar ook de krachtige servers tot je beschikking, zoals Alpha's en Sun (En ja die heb ik hier staan waar het eventueel op zou kunnen draaien). Maar als ik deze discussie zie verlopen dan heb ik er zelf eigenlijk wijnig zin in om hier tijd in te gaan steken er word wild gediscuseerd maar niet bekeken hoe je zo'n algoritme zou moeten maken. Wat maakt mij het uit hoe groot het getal is, en in welke taal en hoe. Waar mij het om gaat is, hoe bedenk je een algoritme zodat je geen onnodige berekeningen gaat uitvoeren en zosnell mogelijk tot een resultaat kan komen. Want een oplossing als 3 * 7; 7 * 13; 7 * 3; 13 * 7 gaat natuurlijk nooit werken. Je moet ook voorkomen dat je geen dubbele berekeningen doet. Het is natuurlijk goed om van te voren te weten of het uberhoupt mogelijk is om zulke grote getallen op te slaan in een variabele waarbij het ook nog makkelijk rekenen is, maar wat heb je eraan als we totaal geen fatsoelijke algoritme hebben. Dan zou je inderdaad de algoritmes moeten bestuderen van andere bedrijfen zoals hierboven vermeld word, en kijken is dat mischien op een een of andere manier te optimaliseren. Het gaat er voor mij uiteindelijk ook niet om om te kunnen winnen maar meer om de uitdaging over het maken van zo'n server onderdeel met clients en het zo optimaal en correct te laten verlopen inclusief het algoritme.
C is net zo portable als Java, je moet alleen opnieuw compilen. Maar op deze manier neem je ook optimalisaties van dat specifieke platform mee, iets wat je bij Java dus niet hebt.
En als je alles goed gelezen had dan ben je aardig wat discussies over een mogelijk algoritme tegen gekomen, dus ik snap niet hoe je dit allemaal kunt zeggen
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
De vraag is dus eigenlijk: hoeveel keer kun je delen in de tijd dat je de volgende priem kunt berekenen en is dat getal groter dan het aantal priemen t.o.v. het aantal oneven getallen.
ofzo