![]() |
Anzeige:
|
|
|||||||
| Algorithmen & Lehrreiches Algorithmen & Lehrreiches... |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 21.04.2011
Ort: Hessen
Alter: 15
Beiträge: 327
|
Abt. Primel-Gefriemel
----------------------- Von 22 Sekunden auf 16 Sekunden... Wer hätte das gedacht Code:
$P-
'PrimTurbo
'
'Turbo-Primzahlensuchprogramm
Declare Primeln#, PrimIndex&, MaxPrimel&, ActPrimel&, StartZeit&, PrimCount&, Ausgabe%, JN$, EndZeit&
Cls
Print "Primzahlen finden bis: ";
Input MaxPrimel&
UserMessages 16
Dim Primeln#, MaxPrimel& + 1
Print ""
Print "Primzahlen werden gesucht..."
StartZeit& = &gettickcount
WhileLoop 4, MaxPrimel&, 2
Byte Primeln#, &loop = 1
EndWhile
WhileLoop 3, sqrt(MaxPrimel&) + 1, 2
IfNot @Byte(Primeln#, &loop)
WhileLoop &loop * &loop, MaxPrimel&, &loop << 1
Byte Primeln#, &loop = 1
EndWhile
EndIf
EndWhile
EndZeit& = &gettickcount
Print ""
Print "Suchen abgeschlossen."
Print "Benötigte Zeit: " + @Str$((EndZeit& - StartZeit&) / 1000) + " Sekunden."
Print ""
Print "Primzahlen zählen (J/N)? ";
Input JN$
If @Upper$(JN$) = "J"
Print ""
Print "Primzahlen werden gezählt..."
PrimCount& = 0
WhileLoop 2, MaxPrimel&
IfNot @Byte(Primeln#, &loop)
Inc PrimCount&
EndIf
EndWhile
Print ""
Print "Gefundene Primzahlen: " + @Str$(PrimCount&)
EndIf
Print ""
Print "Ausgeben (0 = Nicht ausg.; 1 = Im Fenster ausgeben;"
Print "2 = In Datei ausgeben; 3 = beides)? ";
Input Ausgabe%
If (Ausgabe% Mod 2)
Print ""
Print "Ausgabe:"
WhileLoop 2, MaxPrimel&
IfNot @Byte(Primeln#, &loop)
Print &loop
EndIf
EndWhile
EndIf
If (Ausgabe% \ 2)
Print ""
Print "Dateiausgabe..."
Assign #1, "Primzahlen.txt"
ReWrite #1
WhileLoop 2, MaxPrimel&
IfNot @Byte(Primeln#, &loop)
Print #1, &loop
EndIf
EndWhile
Close #1
EndIf
Dispose Primeln#
Print "Beliebige Taste zum Beenden drücken..."
WaitInput
--------------------------- Interpreter: 0,628 Sekunden Compiler*: 0,121 Sekunden Bis 1M (78498 Primzahlen) ------------------------- Interpreter: 77,491 Sekunden Compiler: 16,356 Sekunden Vergleichen kann ich leider nicht, da p.specht ja die anderen Male getestet hat... Würdest Du vllt. nochmal? So, und jetzt in Assembler!!! Gruß Jonathan *Juchuuu, XProfan X2 zu Weihnachten bekommen *freu*
__________________
ASUS K50IJ Notebook --- Pentium T4500 2x 2,4GHz --- 4GB RAM --- 64GB m4 SSD --- Win 7 Home Premium 32-Bit --- XProfan X2.0b Das Schönste am Programmieren ist immernoch die Fehlersuche Dieser Beitrag besteht zu 100% aus Recycling-Bytes.
|
|
|
|
|
|
|
#2 (Direktlink) |
|
Stammuser
![]() Registriert seit: 21.04.2011
Ort: Hessen
Alter: 15
Beiträge: 327
|
Ach, ich sehe gerade, in diesem Thread ist ja die Assemblerversion noch gar nicht drin - hier kommt sie, mit einer Geschwindigkeit von 45 Sekunden für 1 Milliarde Primzahlen
Code:
$P-
'PrimTurbo in Assembler
'
'Eine Primzahlensuche, die abgeht wie sonstwas...
Declare Daten#, ZahlenAnzahl&, StartZeit&, JN$, PrimAnz&
'Erstellt mit dem XProfan Datengenerator, (C) Frank Abbing
'Datei: C:\Users\Jonathan\Desktop\JWASM\PrimTurbo_Hauptschleife.BIN (originale Dateigröße: 162 Bytes)
Declare Code#
Dim Code#,164
Clear Code#
Long Code#,0=1397791846,1448563281,35048,-1959228672,12977264,21022208
Long Code#,24=37799424,54576640,71353856,88131072,104908288,121685504
Long Code#,48=16827904,16859334,441,-834977536,-796187532,311087363,1946286720
Long Code#,76=-1047834384,-487075445,-1957113717,-958790696,-788332285
Long Code#,96=-210315461,29087723,-1962934272,63013832,-150736757,225955387
Long Code#,120=-1048374902,16416770,-347868555,63474671,428425679,1499094878
Long Code#,144=-1654237093,321731,-854261760,-1957165221,49920
Print "Primzahlen finden bis: ";
Input ZahlenAnzahl&
Dim Daten#, ZahlenAnzahl& + 5
Long Daten#, 0 = ZahlenAnzahl&
Long Daten#, 4 = (Sqrt(ZahlenAnzahl&) + 1) \ 1
WhileLoop 0, @SizeOf(Code#) - 4
If @Long(Code#, &loop) = 123456789
Long Code#, &loop = Daten#
EndIf
EndWhile
Print "Primzahlen werden gesucht..."
StartZeit& = &gettickcount
@Call(Code#)
Print ""
Print "Fertig!"
Print "Benötigte Zeit: " + @Str$((&gettickcount - StartZeit&) / 1000) + " Sekunden."
Print "Gefundene Primzahlen: " + @Str$(@Long(Daten#, ZahlenAnzahl& + 1))
Print ""
Print "Primzahlen in Datei 'Primzahlen.txt' schreiben (J/N)? ";
Input JN$
If @Upper$(JN$) = "J"
Print ""
Assign #1, "Primzahlen.txt"
ReWrite #1
WhileLoop 2, ZahlenAnzahl&
IfNot @Byte(Daten#, &loop)
Print #1, &loop
EndIf
IfNot &loop Mod (ZahlenAnzahl& \ 1000)
Locate %csrlin - 1, 1
Print @Str$(&loop / ZahlenAnzahl& * 100) + "% geschrieben..."
EndIf
EndWhile
Close #1
EndIf
Dispose Code#
Dispose Daten#
Print ""
Print "Fertig!"
WaitKey
Gruß Jonathan
__________________
ASUS K50IJ Notebook --- Pentium T4500 2x 2,4GHz --- 4GB RAM --- 64GB m4 SSD --- Win 7 Home Premium 32-Bit --- XProfan X2.0b Das Schönste am Programmieren ist immernoch die Fehlersuche Dieser Beitrag besteht zu 100% aus Recycling-Bytes.
|
|
|
|
|
|
#3 (Direktlink) |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.089
|
Assembler halt.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Workstation für 3D-Berechnung | efendi | Hardware - Kaufempfehlungen | 4 | 28.01.2010 11:30 |
| speicherplatz berechnung | Tim25 | Allgemein | 1 | 14.02.2007 19:27 |
| berechnung von clustergröße einer HDD | nagg | Allgemein | 1 | 01.09.2005 17:46 |
| Excel / Formel zur Berechnung der Geschwindigkeit | Goebi | Office-Anwendungen | 1 | 04.08.2005 23:54 |
| Berechnung Stromverbrauch bei Notebook | tronixx | Hardware - Problemlösungen | 15 | 05.08.2004 14:08 |