|
You last visited: Today at 15:34
Advertisement
hilfe mit "auflistung"
Discussion on hilfe mit "auflistung" within the AutoIt forum part of the Coders Den category.
09/17/2010, 15:04
|
#1
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
hilfe mit "auflistung"
also ich hab mal vor einen "primzahlen zerleger" zu schreiben, und habe folgendes start-problem...
ich habe primzahlen zahlen... zb
"2,3,5,7"
dann will ich eine beliebige zahl (ausm Input) solange mit der "2" dividiren, solange es eine eine "ganze" zahl als lösung kommt,
andersnfalls (mit komma) soll weiter mit der "3" machen, wenns nicht geht, "5"... dann wieder "2" usw...
bsp.
(ausm imput die zahl 60)
60 / 2 = 30
30 / 2 = 15
15 / 2 = 12.5
15 / 3 = 5
nur weiß ich jetz nicht, wie ich das so einrichten kann, dass es alle primzahlen nacheinander nimmt...
müsste ichs in ne .ini speichern und von da aus zeile für zeile nehmen?
wie würde es dann da aussehen?
zum testen obs ne ganze zahl ist mach ichs ja hiermit oder?
If IsInt(variable)...
MfG
|
|
|
09/17/2010, 15:44
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by omer36
also ich hab mal vor einen "primzahlen zerleger" zu schreiben, und habe folgendes start-problem...
ich habe primzahlen zahlen... zb
"2,3,5,7"
dann will ich eine beliebige zahl (ausm Input) solange mit der "2" dividiren, solange es eine eine "ganze" zahl als lösung kommt,
andersnfalls (mit komma) soll weiter mit der "3" machen, wenns nicht geht, "5"... dann wieder "2" usw...
bsp.
(ausm imput die zahl 60)
60 / 2 = 30
30 / 2 = 15
15 / 2 = 12.5
15 / 3 = 5
nur weiß ich jetz nicht, wie ich das so einrichten kann, dass es alle primzahlen nacheinander nimmt...
müsste ichs in ne .ini speichern und von da aus zeile für zeile nehmen?
wie würde es dann da aussehen?
zum testen obs ne ganze zahl ist mach ichs ja hiermit oder?
If IsInt(variable)...
MfG
|
versteh zwar nicht wirklich was das soll, da das ergebnis so immer 1 sein wird, aber hier mal ein beispiel:
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
For $i=0 To UBound($prim)-1
Do
$input_old = $input
$input /= $prim[$i]
ConsoleWrite($input_old&@CRLF)
Until Not IsInt($input)
$input = $input_old
If $input = 1 Then ExitLoop
ConsoleWrite('teilen durch '&$prim[$i]&' failed'&@CRLF)
Next
|
|
|
09/17/2010, 16:31
|
#3
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by omer36
also ich hab mal vor einen "primzahlen zerleger" zu schreiben, und habe folgendes start-problem...
ich habe primzahlen zahlen... zb
"2,3,5,7"
dann will ich eine beliebige zahl (ausm Input) solange mit der "2" dividiren, solange es eine eine "ganze" zahl als lösung kommt,
andersnfalls (mit komma) soll weiter mit der "3" machen, wenns nicht geht, "5"... dann wieder "2" usw...
bsp.
(ausm imput die zahl 60)
60 / 2 = 30
30 / 2 = 15
15 / 2 = 12.5
15 / 3 = 5
nur weiß ich jetz nicht, wie ich das so einrichten kann, dass es alle primzahlen nacheinander nimmt...
müsste ichs in ne .ini speichern und von da aus zeile für zeile nehmen?
wie würde es dann da aussehen?
zum testen obs ne ganze zahl ist mach ichs ja hiermit oder?
If IsInt(variable)...
MfG
|
Mit den ersten 30 Primzahlen kannst du aber bei weitem nicht alle Zahlen zerlegen. Am besten du rechnest die Primzahlen im Script direkt aus, so bist du nicht auf die ersten 30 beschränkt. Hier ein algo der das kann.
Dass mit den von 2 anfangen kannst du dir im Grunde auch schenken, das würde in einer endlosschleife enden, da die letze Zahl selbst eine Primnzahl ist und somit nur durch sich selbst oder 1 teilbar wäre.
Aber hier das Script mit den neustart , vielleicht etwas "leserlicher" als lolkop seins  :
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
$i = 0
While $input <> 1
if IsInt($input/$prim[$i]) Then
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"TRUE"&@CRLF)
$input = $input/$prim[$i]
Else
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"FALSE"&@CRLF)
If $i < UBound($prim)-1 Then
$i = $i+1
Else
$i = 0
EndIf
EndIf
WEnd
und hier korrekt wies sein sollte, ohne Neustart. Jedoch terminiert das Script, gezwungenermaßen, nachdem die ersten 30 Primzahlen durch sind:
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
$i = 0
While $input <> 1
if IsInt($input/$prim[$i]) Then
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"TRUE"&@CRLF)
$input = $input/$prim[$i]
Else
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"FALSE"&@CRLF)
$i = $i+1
EndIf
WEnd
hoffe hab nichts vergessen.
|
|
|
09/17/2010, 17:16
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
schonmal danke euch beiden, ist fasst so, wie ichs wollte...
(eig. wollte ichs ja selber "versuchen" zu scripten, aber...hätte ich wohl nicht so geschaft....^^)
vllt könnt ihr noch bei einer sache helfen...
so siehts bisher aus:
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 531, 190, 308, 255)
$Label1 = GUICtrlCreateLabel("Bitte geben Sie die Zahl ein", 12, 12, 247, 17)
$input = GUICtrlCreateInput("", 12, 36, 137, 21)
$edit = GUICtrlCreateEdit("", 272, 8, 257, 181)
$ok = GUICtrlCreateButton("OK", 12, 72, 113, 29, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ok
start()
EndSwitch
WEnd
Func start()
$input = GUICtrlRead($input)
$i = 0
While $input <> 1
if IsInt($input/$prim[$i]) Then
GUICtrlSetData($edit, GUICtrlRead($edit) & @CRLF & $input&" / "&$prim[$i]&" = "&@CRLF&$input/$prim[$i]&@CRLF)
$input = $input/$prim[$i]
Else
GUICtrlSetData($edit, GUICtrlRead($edit))
$i = $i+1
EndIf
WEnd
EndFunc
und ist es jetz noch möglich, am ende die primzahlen hinzu zufügen?
sprich, wenn ich 60 eingebe, dasss es so kommt:
Code:
60 / 2 =
30
30 / 2 =
15
15 / 3 =
5
5 / 5 =
1
[B]2 * 2 * 3 * 5[/B]
|
|
|
09/17/2010, 17:42
|
#5
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 531, 190, 308, 255)
$Label1 = GUICtrlCreateLabel("Bitte geben Sie die Zahl ein", 12, 12, 247, 17)
$GUIinput = GUICtrlCreateInput("", 12, 36, 137, 21)
$edit = GUICtrlCreateEdit("", 272, 8, 257, 181)
$ok = GUICtrlCreateButton("OK", 12, 72, 113, 29, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ok
start()
EndSwitch
WEnd
Func start()
$input = GUICtrlRead($GUIinput)
$i = 0
$fak = $input&" = 1"
While $input <> 1
if IsInt($input/$prim[$i]) Then
GUICtrlSetData($edit, GUICtrlRead($edit) & @CRLF & $input&" / "&$prim[$i]&" = "&@CRLF&$input/$prim[$i]&@CRLF)
$fak = $fak&" * "&$prim[$i]
$input = $input/$prim[$i]
Else
$i = $i+1
EndIf
WEnd
GUICtrlSetData($edit, GUICtrlRead($edit)&$fak & @CRLF &"======================================")
EndFunc
Wie gesagt, dass Script bricht bei höheren Zahlen ab, da die benötigten Primzahlen zur berechnung nicht in den array bereitgestellt sind. Du solltest dir am besten die Primzahlen zu Laufzeit des Scriptes direkt ausrechnen, oder eine Begrenzung einbauen.
Edit: Außerdem war noch nen Bug drinne, wenn du zweimal hintereinander eine Zahl suchst. is gefixt.
|
|
|
09/17/2010, 18:07
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by | Moep |
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
$i = 0
While $input <> 1
if IsInt($input/$prim[$i]) Then
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"TRUE"&@CRLF)
$input = $input/$prim[$i]
Else
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"FALSE"&@CRLF)
$i = $i+1
EndIf
WEnd
|
öhm du hast statt einer in diesem fall besseren for schleife eine while schleife genommen, was anstatt in einer endlosschleife zu landen, beim nicht auffinden einer passenden primzahl zu einem array overflow führen wird.
es ist zwingen notwendig die schleife nur von 0-29 laufen zu lassen, da sonst $prim[29+] abgefragt wird, was nicht existiert. und aus effizienzgründen ist eine for schleife auch immer eine while schleife vorzuiziehen :P
|
|
|
09/17/2010, 18:20
|
#7
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by lolkop
öhm du hast statt einer in diesem fall besseren for schleife eine while schleife genommen, was anstatt in einer endlosschleife zu landen, beim nicht auffinden einer passenden primzahl zu einem array overflow führen wird.
es ist zwingen notwendig die schleife nur von 0-29 laufen zu lassen, da sonst $prim[29+] abgefragt wird, was nicht existiert. und aus effizienzgründen ist eine for schleife auch immer eine while schleife vorzuiziehen :P
|
Darauf hab ich gewartet. Und deine komische for...next do...until combo ist jetzt nach eingehenden tests von unabhängigen instituten die effektivste aller Lösungen?!
Außerdem hab ich ihn darauf hingewiesen dass das Script abbricht, man könnte um das zu umgehen einfach folgendes einbauen.
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
$i = 0
While $input <> 1 [COLOR="Red"]And $i <> UBound($prim)[/COLOR]
if IsInt($input/$prim[$i]) Then
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"TRUE"&@CRLF)
$input = $input/$prim[$i]
Else
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"FALSE"&@CRLF)
$i = $i+1
EndIf
WEnd
|
|
|
09/17/2010, 18:40
|
#8
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by | Moep |
Darauf hab ich gewartet. Und deine komische for...next do...until combo ist jetzt nach eingehenden tests von unabhängigen instituten die effektivste aller Lösungen?!
Außerdem hab ich ihn darauf hingewiesen dass das Script abbricht, man könnte um das zu umgehen einfach folgendes einbauen.
Code:
Dim $prim[30] = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113]
$input = InputBox('Enter Number', 'Enter a number >= 1', 10)
$i = 0
While $input <> 1 [COLOR="Red"]And $i <> UBound($prim)[/COLOR]
if IsInt($input/$prim[$i]) Then
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"TRUE"&@CRLF)
$input = $input/$prim[$i]
Else
ConsoleWrite($input&" / "&$prim[$i]&" = "&$input/$prim[$i]&@TAB&"FALSE"&@CRLF)
$i = $i+1
EndIf
WEnd
|
man kann man die effizienz von schleifen einfach durch ein tool testen:
Code:
Dim $array[10]
$t = TimerInit()
For $a = 1 To 100
For $b = 1 To 100
$array[0] = 0
$array[1] = 1
$array[2] = 2
$array[3] = 3
$array[4] = 4
$array[5] = 5
$array[6] = 6
$array[7] = 7
$array[8] = 8
$array[9] = 9
Next
Next
ConsoleWrite("zeitaufwand durch direktes setzen: "&TimerDiff($t)&"ms"&@CRLF)
$t = TimerInit()
For $a = 1 To 100
For $b = 1 To 100
For $x = 0 To 9
$array[$x] = $x
Next
Next
Next
ConsoleWrite("zeitaufwand durch For schleife: "&TimerDiff($t)&"ms"&@CRLF)
$t = TimerInit()
For $a = 1 To 100
For $b = 1 To 100
$x = 0
While $x < 10
$array[$x] = $x
$x+=1
WEnd
Next
Next
ConsoleWrite("zeitaufwand durch While schleife: "&TimerDiff($t)&"ms"&@CRLF)
$t = TimerInit()
For $a = 1 To 100
For $b = 1 To 100
$x = 0
Do
$array[$x] = $x
$x+=1
Until $x > 9
Next
Next
ConsoleWrite("zeitaufwand durch Do schleife: "&TimerDiff($t)&"ms"&@CRLF)
dann erhält man auch vergleichszeiten, gegen die du jetz hoffentlich nichtmehr argumentieren wirst...
Code:
zeitaufwand durch direktes setzen: 88.125068968263ms
zeitaufwand durch For schleife: 105.610629283889ms
zeitaufwand durch While schleife: 221.581793216736ms
zeitaufwand durch Do schleife: 217.137094239631ms
um das ganze noch etwas deutlicher zu machen, kann man auch die for schleifen von 1-500 laufen lassen und erhält:
Code:
zeitaufwand durch direktes setzen: 1558.94142970685ms
zeitaufwand durch For schleife: 2349.61678090372ms
zeitaufwand durch While schleife: 4791.73023387051ms
zeitaufwand durch Do schleife: 4690.06843048488ms
aber auch mit reiner logik sollte klar sein das do until schleifen in diesem falle besser sind, da nach abschluss der aktion direkt ermittelt wird, ob weiter gemacht werden muss. bei der while schleife wird nocheinmal zu start gesprungen, und im falle der fertigen aktion hinter das ende gesprungen.
warum jetzt schleifen allgemein so inneffizient sind gegen über dem direkten setzen kann ich leider nicht sagen. das wurde von autoit leider schlecht umgesetzt, da eig for, do und direktes setzen genau gleiche zeiten haben müssten, da selber asm code...
|
|
|
09/17/2010, 19:15
|
#9
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by lolkop
erstens würde das immernoch zum fehler führen, da ubound die anzahl der elemente zurück gibt, was bei 0-29 leider 30 entspricht.. und auch element 30 existiert nicht.
|
Wenn du dir die Bedingung richtig angesehen hättest, dann wäre dir vielleicht auch aufgefallen dass die Schleife solange läuft bis $i ungleich 30 ist, also von 0-29.
Außerdem denke ich das mein Code doch bei weitem leserlicher ist als deiner, mag sein das deiner einen geschwindigkeitsvorteil hat. Jedoch stellt sich die Frage ob dem TS ein code der 100ms schneller oder einer der nachvollziehbar geschrieben ist, lieber ist.
|
|
|
09/17/2010, 19:43
|
#10
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
was sind den schon 100ms...
ich würde lieber einen script haben, wo ich auch durchblicke...
und nicht einfach kopiere und es abhacke...
es geht, und das zählt.. ^^
nochmal danke an euch beiden.
|
|
|
09/17/2010, 21:53
|
#11
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by | Moep |
Wenn du dir die Bedingung richtig angesehen hättest, dann wäre dir vielleicht auch aufgefallen dass die Schleife solange läuft bis $i ungleich 30 ist, also von 0-29.
|
da hast du natürlich recht =). habe das leider erst nach dem posten bemerkt und das auch direkt danach wieder gelöscht.
Quote:
Originally Posted by | Moep |
Außerdem denke ich das mein Code doch bei weitem leserlicher ist als deiner, mag sein das deiner einen geschwindigkeitsvorteil hat. Jedoch stellt sich die Frage ob dem TS ein code der 100ms schneller oder einer der nachvollziehbar geschrieben ist, lieber ist.
|
über leserlichkeit will ich jetzt hier nicht streiten, aber zu dem effizienzvergleich kann ich nur sagen, das es sich halt nicht um 100ms handelt, sondern um doppelten aufwand und daraus resuliterende halbe geschwindigkeit.
mag sein das das manche leute nicht interessiert, ich würde aber beim schreiben von programmen immer effizienz an erste stelle setzen. und auch wenn du das vielleicht so verstanden hast, ich wollte dich damit ja nicht runter machen... wollte lediglich anmerken, dass das ganze auch deutlich effizienter geht.
gerade bei komplexen aufgaben wie diesen, macht das bei großen mengen an primzahlen schon einen deutlichen unterschied. und wie du schon selbst sagtest, mit diesen 30 primzahlen bekommt man bei weitem nicht alle zahlen aufgeteilt =)
habe die 30 zahlen auch nur aus  übernommen. wenn man in das array alle zahlen einfügt, hat man im endeffekt mehrere sekunden geschwindigkeits unterschied.
wie dem auch sei ihr müsst immer für euch wissen, was für euch das wichtigste ist =)
|
|
|
09/17/2010, 22:28
|
#12
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
ihr habt beide recht und punkt!
ich persönlich habe keine probleme wenn ich 1sec. mehr warten muss.....
ist bei jedem anders...
mein kleiner couseng hatt grad in der schule mit den primzahlen angefangen und da dachte ich mir, ich versuch mal so ein programm zu schreiben, und es ihm zu schicken,
(darum wollte ich auch soweit wie möglich den lösungsweg mit schreiben lassen..)
aber sowas ist wohl (noch) zu schwer für mich...
darum fand ich jetz | Moep | ´s source "besser", indem sinne, weil ichs da besser sehen konnte, was was sein soll...
weil ich nicht einfach kopieren und abspeichern will, sondern auch lernen wie das gehen soll...
aber nochmal danke an euch. ^^
MfG
€achja.. hab etwas über 600primzahlen hinzugefügt ^^
müsste wohl inetwa reichen..
|
|
|
09/18/2010, 11:11
|
#13
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Quote:
Originally Posted by omer36
€achja.. hab etwas über 600primzahlen hinzugefügt ^^
müsste wohl inetwa reichen.. 
|
Huh... Is ja nen ganzer Haufen Primzahlen geworden. Wie lange braucht da mein Script für? Ich will jetzt keinen neuen Vergleich antreten, es interresiert mich nur
@lolkop, Kennst du den Spruch "Make It Work Make It Right Make It Fast" von KentBeck.  Natürlich ist es von enormen Vorteil bei einer komplexen Berechnung einen leistungsfähigen Algo zur Hand zu haben, das möchte ich nicht Bestreiten. Jedoch stellt sich auch die Frage nch Aufwand und Nutzen. Vielleicht kommt ja der TS irgendwann mal in die Versuchung Zahlen im breich jenseits der 32bit zu berechnen. Dann würde ich ihm auch dringend zu einem anderen algo raten
Btw. wäre in dem Fall nicht ein rekursiver funktionsaufruf der performanteste?! Das Problem bei höheren Zahlen wäre dann wohl nur der überlaufende Stack...
|
|
|
09/18/2010, 11:18
|
#14
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
ich hatte vorher natürlich gegooglt bevor ichs hier gefragt habe und hatte aus nen anderen forum nen script gefunden, der "19562" primzahlen in eine .ini abgespeichert und nummeriert hatt... hab dann einfach die ersten 600+ genommen ^^
€um es genauer zu sagen, habe ich 644 primzahlen genommen, weil mehr in eine zeile nicht rein passen und eine fehlermeldung kommt 
und die müssten ja wohl erstmal reichen... ^^
|
|
|
09/18/2010, 11:48
|
#15
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
LeechTime..
Interresant wie das Problem hier geöst wurde  :
Code:
ConsoleWrite( _GetPrimeFactors(123456) & @CRLF)
Func _GetPrimeFactors($n)
Local $F = ObjCreate("System.Collections.ArrayList")
While Mod($n,2) == 0
$F.add(2)
$n = $n/2
WEnd
While Mod($n,3) == 0
$F.add(3)
$n = $n/3
WEnd
Local $t = 5
Local $diff = 2
While $t*$t <= $n
While Mod($n,$t) == 0
$F.add($t)
$n = $n/$t
WEnd
$t = $t + $diff
$diff = 6 - $diff
WEnd
If $n > 1 Then $F.add($n)
Local $out = ''
For $element In $F
$out &= $element & ','
Next
Return StringTrimRight($out, 1)
EndFunc
Hier sieht man wie die Primzahlen z.B. auch generiert werden könnten.
Code:
MsgBox("","",GetPrim(10000))
Func GetPrim($MaxZ, $Delim = ' ')
If ($MaxZ < 2) Then Return 0
If ($MaxZ = 3) Then Return 2
Dim $Flag[$MaxZ + 1], $Prim = 2 & $Delim
For $i = 1 To $MaxZ Step 2
$Flag[$i] = 1
Next
For $i = 3 To $MaxZ Step 2
If ($Flag[$i]) Then
For $e = ($i ^ 2) To $MaxZ Step $i
$Flag[$e] = 0
Next
$Prim &= $i & $Delim
EndIf
Next
Return $Prim
EndFunc ;==>GetPrim
|
|
|
Similar Threads
|
Flyff P-Server "Job's" Frage/Auflistung
11/06/2010 - Flyff Private Server - 28 Replies
Hallo liebe Comunity,
Ich wollte mal eine Liste der P-Server Jobs machen und Auflisten welche Programme sie brauchen ich bitte euch das was Frei ist " K.A "zu ergänzen.:
Also im Klartext: Ich wollte wissen Welche Programme die "Arbeiter" eines P-Servers haben z.b Der Mapper braucht BWE (Beast World Editor)
Admin
Programm:Serverfiles/GM-Tool
Aufgabe:Server und alle Accs verwalten & am Anfang serverfiles einrichten
GM
Programm: GM-Tool
|
Kann mir bitte jemmand eine Hmachi HP erstellen """""SOS HELP""""
09/15/2010 - Metin2 Private Server - 11 Replies
SO wie der Titel schon sagt ich suche einen der mir per Teamviwer eine hp machen kann habe schon alles ausprobiert aber es klappt nie!!!!
PLS HELP...
|
All times are GMT +1. The time now is 15:35.
|
|