016
06.12.2006, 22:12 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
hier, code vom erweiterten euklid
C++: |
c#include <stdio.h> /*Programbasis vergleiche BRK96 S.50*/
int main() { long int a,b,rest,xalt,xmitte,xneu,yalt,ymitte,yneu,q,x,y,basica,basicb;
clrscr(); printf("Geben sie die 2 Zahlen ein von der die Vielfachdarstll. ermittelt werden soll:\n\n"); scanf("%ld",&a); scanf("%ld",&b); printf("\n\n"); basica=a; basicb=b;
xalt=1; xmitte=0; /*Startwert gilt fuer: a=1*a+0*b)*/ yalt=0; ymitte=1; /*Startwert gilt fuer: b=0*a+1*b)*/
while(b) { rest=a%b; q=(a-rest)/b; printf("%ld = %ld*%ld + %ld",a,q,b,rest);
xneu=xalt-xmitte*q; /*die x'er werden zusammengezaehlt*/ yneu=yalt-ymitte*q; /*die y'er werden zusammengezaehlt*/
printf(" %ld=%ld*%ld+%ld*%ld\n",b,basica,xmitte,basicb,ymitte); a=b; b=rest; /*Hier wird wie beim einfachen eukilid a=b und b=r gesetzt */
/*Auch hier werden 2 Speichervariablen gebraucht und die 3. zur Uebergabe. Der "alte" Wert wird jeweils geloescht; wobei der "mittlere" ja zur weiterberechnung wieder gebraucht wird; darum geht der in die Variable des ehemals "alten ueber"; der "neue" Wert stammt aus der Berechnung und geht somit in die Variable des ehemals "mittleren" ueber*/ xalt=xmitte; xmitte=xneu; yalt=ymitte; ymitte=yneu;
} x=xalt; y=yalt; /*Es wird eigentlich xmitte und ymitte ausgegeben*/ printf("\nVielfachsummendarstellung:\n%ld = %ld*%ld + %ld*%ld", a,x,basica,y,basicb); getch(); }
|
ansonsten: GGT bei GOOGLE eingeben und den mathematischen Algorithmus nachprogrammieren, geht in ca 4-5 Zeilen -- class God : public ChuckNorris { }; |