rekursion unformung

Gast #5656495
Lesenswert?
• ▲
▼
Hallo,

Ich benötige etwas Hilfe und zwar hätte ich gern die Iterative Umformung 
von. Mir ist klar das ich ne schleife reinbauen muss um den 
Rekursionsaufruf wegzubekommen:
1
def inv(a, k):
2
    if k==1:
3
        return 1
4
    m=1<<k    # 2**k
5
    a=a % m
6
    r=inv(a, (k+1)//2)
7
    return (2-a*r) * r % m
Moderator #5656977
Lesenswert?
• ▲
▼
Die rekursive Lösung ist IMHO dennoch die elegantere, und ich hatte
einige Mühe, den nichtrekursiven Algorithmus so hinzubiegen, dass er
ähnlich effizient wie der rekursive ist. Auch der Stackverbrauch ist
hier kaum ein Argument gegen die Rekursion, da er nur mit log2(k) bzw.
log2(log2(m)) wächst, angesichts des Speicherverbrauchs von m also
vernachlässigbar ist.
#5657781
Lesenswert?
• ▲
▼
Falls es um Krypto geht, dann sollte man sich u.U. ein paar Paper dazu 
ansehen (u.a. auch auf Wikipedia verlinkt), die auch die 
Seitenkanalresistenz und Fehlersicherheit betrachten u.a.:

The Montgomery Powering Ladder
https://cr.yp.to/bib/2003/joye-ladder.pdf

Efficient and Side-Channel Resistant RSA Implementation for 8-bit AVR 
Microcontrollers
http://www.caad.arch.ethz.ch/noolab/files/external/conferences/IoT2010_proceedings/pdf/WS1/WS1_6.%20seciot2010_submission_12_final_v0.pdf#page=8

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.