ggT nach Euklid (Unterprogramme)
Berechnen Sie den größten gemeinsamen Teiler (ggT) zweier Zahlen A und B nach Euklid {Euklid von Alexandria (um 360 v. Chr. - 280 v. Chr.)} mittels Unterprogramm. Der ggT ist die größte Zahl, durch die sowohl A als auch B ohne Rest teilbar sind. Das Verfahren ist relativ einfach. Es wird wie folgt vorgegangen:
- R wird zum Divisionsrest aus A / B. (Falls B > A, so wird R einfach zu A.)
- Ist R = 0, so ist B der ggT, und das Unterprogramm wird beendet.
- Der Variable A wird der Wert von B zugewiesen, und der Variable B wird R zugewiesen.
- Zurück zu 1.
1 Kommentare
6 Lösung(en)
def ggt(a,b):
if (b > a):
R = a
else:
R = a%b
if R==0:
print 'ggt:'+str(b)
return b
a=b
b=R
ggt(a,b)
def ggT(a,b):
x,y = a,b
while x != y:
if x > y:
x=x-y
else:
y=y-x
return x
print ggT(61608,10674945)
int ggT(int a, int b) {
int r;
r = a % b;
while(r != 0) {
a = b;
b = r;
r = a % b;
}
return b;
}
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
package ch.santis.modul725.subroutinen;
import java.util.Scanner;
public class ggTnachEuklid {
public static void main(String[] args) {
new ggTnachEuklid().top();
}
//Globale Varaible
Scanner sc = new Scanner(System.in);
//Hauptprogramm
void top() {
System.out.println("Bitte die erste Zahl eingeben:");
int zahlA = sc.nextInt();
System.out.println("Bitte die zweite Zahl eingeben:");
int zahlB = sc.nextInt();
int ggtBerechnen = ggt(zahlA, zahlB);
System.out.println("Der grösste gemeinsame Teiler ist: "+ ggtBerechnen);
}
//ggT Berechnen
int ggt(int zahlA, int zahlB) {
int ggt = 0;
do{
int rest = zahlA % zahlB;
if(zahlB > zahlA) {
rest = zahlA;
}
if(rest == 0){
ggt = zahlB;
return ggt;
}
zahlA = zahlB;
zahlB = rest;
}while(zahlB != ggt);
return 0;
}
}
Lösung von: Name nicht veröffentlicht
function gcdEuklid(a, b) {
let rest;
while (b != 0) {
rest = (b > a) ? a : a % b;
a = b;
b = rest;
}
return a;
}
console.log(gcdEuklid(19, 4));
console.log(gcdEuklid(33, 22));
console.log(gcdEuklid(111, 74));
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// C11 | VS-2022
#include <stdio.h>
#include <stdlib.h>
// rekursiv
unsigned long ggt_rec(unsigned long a, unsigned long b) {
if (b == 0) return a;
return ggt_rec(b, a % b);
}
// iterativ
unsigned long ggt_itr(unsigned long a, unsigned long b) {
unsigned long c;
if (a == b) return a;
else if (a % b == 0) return b;
else
for (c = b; c > 0; c--)
if (a % c + b % c == 0)
return c;
}
int main(void) {
printf("%lu\n", ggt_rec(19, 4));
printf("%lu\n", ggt_itr(19, 4));
printf("%lu\n", ggt_rec(33, 22));
printf("%lu\n", ggt_itr(33, 22));
return EXIT_SUCCESS;
}
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
ggT(19, 4) = 1
ggt(33, 22) = 11
ggt(111, 74) = 37
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | Schwer |
Webcode: | 7k49-32v7 |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |
Kommentare (1)