Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Algorithmen & Lehrreiches

Algorithmen & Lehrreiches Algorithmen & Lehrreiches...

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Suche Programm um Werbung zu...
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag [Windows XP-32 bit] Ihr Konto wird gesperrt...
Aufrufe: 25, Antworten: 3
Gehe zum ersten neuen Beitrag Serienempfehlung gewünscht :)
Aufrufe: 1935, Antworten: 27
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26436, Antworten: 4179
Gehe zum ersten neuen Beitrag [Verkaufe] HTC Desire "S"
Aufrufe: 21, Antworten: 0
Gehe zum ersten neuen Beitrag Probleme mit Internet...
Aufrufe: 301, Antworten: 11
Gehe zum ersten neuen Beitrag Schnäppchen Thread ... von...
Aufrufe: 7363, Antworten: 36
Gehe zum ersten neuen Beitrag Vier Jahre Haft für...
Aufrufe: 35, Antworten: 0
Gehe zum ersten neuen Beitrag Wie öffnet man mehrere...
Aufrufe: 203, Antworten: 13
Gehe zum ersten neuen Beitrag Soundprobleme
Aufrufe: 32, Antworten: 1
Zeige:





Thema geschlossen
 
LinkBack Themen-Optionen Ansicht
Alt 14.08.2011, 17:45   #1 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Fakultäten auf volle Stellenzahl berechnen
===========================
Vorwarnung: Der Algorithmus ("Multiplikation zu Fuß") hat nahezu quadratische Laufzeit! Mit ProfComp compiliert, braucht 100! 234 ms, 500! 8485 ms, 1000! 39750 ms, für 2000! bereits 176889 ms = 2 min 57 sec. Und 2500! langweilt dann schon mit 285013 ms = 4 min 45 sec, die 9131 Stellen von 3000! brauchen gar 419766 ms = 7 min. (Aus Fadesse: 4000! mit 12674 Stellen ziemlich genau 13 min). Um 10000! auszuprobieren (dafür wäre die reservierte Stellenzahl ausgelegt) ist mir meine Lebenszeit zu schade (Schätzung: ~4 1/2 Tage)... Das Ding schreit nach Assembler !
Gruss
Code:
WindowTitle "Fakultätsberechnung mit voller Stellenzahl"
'Source: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
'Translated to XProfan 11.2a by P. Specht (D) Demoware 2011-08 f
'Demo only. No warranty whatsoever. Ohne jegliche Gewähr!

Def &Limit 35661                  'Ausreichende Anzahl Stellen
Def &Base  10                     'The base of the simulated arithmetic.
Def &FactorialLimit 10000         'Max number to solve
Declare Digit&[&Limit]            'The big number.
Declare carry&, d&, n&            'Assistants during multiplication.
Declare last&, i&                 'Indices to the big number's digits.
Declare text$[&Limit]             'Scratchpad for the output.
Declare tdigit$[15]               'The Number Signs in that Base System
tdigit$[0]="0":tdigit$[1]="1":tdigit$[2]="2":tdigit$[3]="3"
tdigit$[4]="4":tdigit$[5]="5":tdigit$[6]="6":tdigit$[7]="7"
tdigit$[8]="8":tdigit$[9]="9":tdigit$[10]="A":tdigit$[11]="B"
tdigit$[12]="C":tdigit$[13]="D":tdigit$[14]="E":tdigit$[15]="F"
Declare Fact&
Declare Dauer&

Font 2 : Randomize
Window 0,0 - %MaxX/2,%MaxY-50

Eingabe:
cls rnd(8^8)

Print " Fakultät berechnen von n = ";:input Fact&
if Fact&=0
  Print: Print " 0! = 1  (per Definition)"
  WaitInput
  goto "Eingabe"
elseif Fact&<0
  Print " Fakultät hier nur von natürlichen, also positiven Zahlen!"
  Print " Danke für's testen!"
  WaitInput
  goto "Finis"
elseIf Fact& > &FactorialLimit
  print " Für den reservierten Speicher zu groß, bitte max. ";&FactorialLimit
  Beep
  Waitinput
  Goto "Eingabe"
Endif
Print " Berechnung von n! ..." : Print

'BEGIN  Arbitrary Precision Algorithm
dauer&=&GetTickCount
Clear Digit&[]                    'Clear the whole array.
Digit&[1]=1                       'The big number starts with 1,
last&=1                           'Its highest-order digit is number 1.
WHILELOOP Fact&                   'Step through producing 1!, 2!, 3!, 4!, etc. 
  n&=&Loop
  carry&=0                        'Start a multiply by n.
  WhileLoop last&                 'Step along every digit.
    i&=&Loop
    d&=digit&[i&] * n& + carry&   'Classic multiply.
    digit&[i&]=d& mod &Base       'The low-order digit of the result.
    carry&=d& \ &Base             'The carry to the next digit.
  EndWhile
  While carry& > 0                'Store the carry in the big number.            
    if last& >= &Limit
      print "Array Overflow!"
      Beep
      WaitInput
      END
    endif
    last&=last& + 1                'One more digit.
    digit&[last&]=carry& mod &Base 'Placed.
    carry& = carry& \ &Base        'The carry reduced.
  Endwhile                         'With n > Base, maybe > 1 digit extra.

Case n&<Fact& : continue         'Else Output
    dauer&=&GetTickCount-dauer&
    
    Print
    Print " ";n&;"! = ";      'Translate from binary to text:
    whileloop last&,1,-1              'Arabic numerals put the low order last, so
      print tdigit$[digit&[&Loop]];   'we have to reverse the order.
      case %pos > Width(%hwnd) /10.26 : print
       if %csrlin > (Height(%hwnd)-40)/20
         print " ...weiter mit Taste! "
         WaitInput
         CLS rgb(200,200,200)
         print "...";
       endif 
    endwhile
    Print  
    Print " Diese Zahl hat "; last&; " Stellen, berechnet in "; dauer&; " ms "

ENDWHILE                           'Upward to the next multiplication
WaitInput
Goto "Eingabe"
Finis:
END
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline  
Werbung

Windows 7 Tipps und Tricks in Bildern

Thema geschlossen

  Paules-PC-Forum.de > Programmierung > XProfan > Algorithmen & Lehrreiches

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rechner voller Probleme !!! Dj Dtox Software - Allgemein 16 18.03.2009 09:17
Desktop voller Icons Arkona1 Viren-Forum 9 29.08.2008 15:38
Mein PC ist voller Malware! derki Viren-Forum 1 10.10.2007 15:56
voller speed für usb 2.0 tilohornoff Windows XP 6 06.11.2004 13:20
BW.exe führt zu voller CPU Auslastung ???? Eddi Office-Anwendungen 2 20.08.2002 14:01



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:01 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2