From cf145ceeedba561b6a8b07c6d413e13dac774a34 Mon Sep 17 00:00:00 2001 From: Luca Conte Date: Wed, 17 May 2023 16:51:17 +0200 Subject: [PATCH] u20 euklidischer algorithmus --- .nfs000000000157ded700000020 | Bin 1206 -> 0 bytes u20/src/Bruch.java | 47 +++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 19 deletions(-) delete mode 100644 .nfs000000000157ded700000020 diff --git a/.nfs000000000157ded700000020 b/.nfs000000000157ded700000020 deleted file mode 100644 index 11ac22699f841922eaa13e022c01b15d13919d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1206 zcmWIWW@Zs#U|`^2xY)EYY~h-enctWg7}z)&7`PZ@7@UeqlQZU3i#p z?@2@1&0AB$r%g6>zL#>`)-AtsW8kzsH~KEiD|Rq8*|q(WO|Vqn5vLw+-;+O# zb{w3kw`|^X-!^Cdwt}h3XOmL&RXT<2RuqXfYj8*CPHb3m%u84dMOO-!DbyF6 z@9Lkv_>*b$PveiDj65>fHoJ(ldVjk8xgmUAhN8)=kPSi->MNF6OV?~!^Y&^u>-jZ` zb5@H^`^>fAbWX;dEDz7aU!Sc%$+48@;Uce~_PNiTI=9$uN}lR_y|Xo0GDQ6c?*@0? z24*$Zyq7b&3LAgj+V%5Xt-;-o8+O!8KlE;W^~$(~ahV)D`ApXf%$;*|@t!CVG0D~o z4%ZYmJ0H0Da7pa!y#j6cuO}w_{tqz`l&!lVvZCZDQ z{I~t}#Nf~K+mB3V?s|~+a2|JN{lS<^-FwXsF%~_&+5SA0Yp3C4kq?~VQ@T=AA1z^C z$?rYmqwv9s?}{Ja{#$VO_T=YEe>$_~C0v#ID%118JGFD-n*)Z)My!g?A!iQzE@BWq z)KC$0Xy&EZLxP`OB0hb*Q{yU|99=MR>4(R5<X6Ag)k+WE3w3DactZw4H=!G|TAHDbPrAGS3 zZ=Bb&<}0#1e)}Tx9P8%KhpJz^()sCjbWw+C`p-Elzr0*EJ32$jE=_S;)cu?bWlgSs zs=jr)Un^huxX|m;`nrw%9r--NIQ0eAeOpS`^jTdw`^-^L!^(*4D&U#=+CkS>c~ckkA3_5gU!nF7o?-;QR= zwgB_dJ|N}<=A4k!;u1v0+5RXcr5lLRGR|Wy4c}8IeZoA>dFtqead_(L1+I7&#K5$o zqR=ymbAs0C^FDzme9xS@%%P`w>Wp`PU#N$Um;SXDEjGsGi!MFkX;pD%jc(m@rHCW^ zaFF}K3m%uHVkZiADH+SMa;umgoO)Ds<<6>~OI52_9d>&aeKMKE^EHUuTe!H(bW)GW zLa*$dSvwg5ycwC~m~j;W5 n) { + z -= n; + } else { + n -= z; + } + } + return z; + } + /** * Liefert den Bruch in gehashter Form */ @Override public int hashCode() { - /* Absolute Werte bestimmen - * Um redundanz zu vermeiden und Rechenleistung zu sparen - * werden sie in temporären Variablen gespeichert - */ - int absZ = Math.abs(this.zaehler); - int absN = Math.abs(this.nenner); - - /* - * Größten gemeinsamen Teiler bestimmen - */ - int i; - for (i = Math.min(absZ, absN); i > 0; i--) { - if (absZ % i == 0 && absN % i == 0) { - break; - } - } + int ggt = this.getGgT(); + int sign = 1; /* * Vorzeichen bestimmen */ - if (this.zaehler < 0) i *= -1; - if (this.nenner < 0) i *= -1; + if (this.zaehler < 0) sign *= -1; + if (this.nenner < 0) sign *= -1; /* * Hash des Bruchs berechnen. * Wenn negativ wird immer der Zähler als negativ angegeben, nie der Nenner. * Sorgt dafür dass -1/2 == 1/-2 */ - return Objects.hash(absZ / i, absN / Math.abs(i)); + return Objects.hash(Math.abs(this.zaehler) / ggt * sign, Math.abs(this.nenner) / ggt); }