Ergebnis 1 bis 4 von 4
  1. #1
    Jahrelanger Discopumper Avatar von aKiller47
    Registriert seit
    05.09.2008
    Beiträge
    94

    Standard Euklids Algo aka GGT ausrechen

    Hey,

    ich hatte irgendwie Langeweile und würde mich einfach über Bewertung dieses Codes freuen, sei es Kritik, Verbesserung oder Lob freuen!

    http://akiller47.phpnet.us/euklid.txt

    Vielleicht konntet ihr ja sogar was lernen. Ich hoffe einfach das es jemandem was nützt.

    mfG aKiller
    We don't talk to police
    We don't make a peace bond

  2. #2

    Standard

    Code:
    if(argv[1] == 0 || argv[2] == 0) // Dont try it!
    		return 0;
    	if(argc != 3){
    		printf("Usage: a b\n");
    		return 0;
    	}
    	else
    Du solltest die Anzahl der Parameter überprüfen bevor du sie verwendest und wenn du in dem if ein return aufrufst, dann kannst du dir das else sparen.
    Für atoi solltest du auch noch auch noch stdlib.h einbinden. Der ein oder andere Compiler stört sich vielleicht sonst dran.
    Aber kommt ja eigentlich eher auf den Algorithmus an und der funktioniert!

    Hier mal noch der erweiterte Euklid'schen Algorithmus zur Berechnung der modularen Inverse (z.B. für RSA).
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int modInverse(int a, int n)
    {
            int rest=2,teiler=a,wert=n,erg;
            while (rest>1)
            {
                    rest = wert%teiler;
                    erg = wert/teiler;
                    wert = teiler;
                    teiler = rest;
            }
    
            return wert;
    }
    
    int main(int argc, char* argv[])
    {
            if(argc!=3)
            {
                    fprintf(stderr,"usage: %s <zahl> <zahl>\n",argv[0]);
                    exit(-1);
            }
    
            int a,b,inv;
            a = atoi(argv[1]);
            b = atoi(argv[2]);
            inv = modInverse(a,b);
            printf("Die modulare Inverse von %d zu Modul %d ist %d.\n",a,b,inv);
    
            return 0;
    }

  3. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    aKiller47 (05.03.2010)

  4. #3
    Fortgeschrittener Avatar von HellSlayer
    Registriert seit
    19.02.2010
    Beiträge
    49

    Standard

    Srry für meine noob frage aber wofür ist das gut ^^ was berechnet man da?^^
    Sieger stehen da auf, wo verlierer leigen bleiben

  5. #4
    Jahrelanger Discopumper Avatar von aKiller47
    Registriert seit
    05.09.2008
    Beiträge
    94

    Standard

    Zitat Zitat von naroht Beitrag anzeigen
    Du solltest die Anzahl der Parameter überprüfen bevor du sie verwendest und wenn du in dem if ein return aufrufst, dann kannst du dir das else sparen.
    Ja das war echt mein Fehler, ist logisch. Danke fürs drauf aufmerksam machen

    Man kann den größten gemeinsamen Teiler ausrechnen!
    We don't talk to police
    We don't make a peace bond

  6. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    HellSlayer (05.03.2010)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •