Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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:

  1. R wird zum Divisionsrest aus A / B. (Falls B > A, so wird R einfach zu A.)
  2. Ist R = 0, so ist B der ggT, und das Unterprogramm wird beendet.
  3. Der Variable A wird der Wert von B zugewiesen, und der Variable B wird R zugewiesen.
  4. Zurück zu 1.

1 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (1)

gressly 11. Juli 2018 14:37   reply report
Effizienter für Binärzahlen ist der Algorithmus von Josef Stein, R. Silver und J. Tersian.

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Schwer
Webcode: 7k49-32v7
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen