Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Pythagoräisches Tripel (Schleifen)

In der Zahlentheorie wird  ein pythagoreisches Tripel oder pythagoreisches Zahlentripel von drei natürlichen Zahlen gebildet, die als Längen der Seiten eines rechtwinkeligen Dreiecks vorkommen können. Mit den Seitenlängen eines solchen Dreiecks kann auf einfache Weise ein rechter Winkel konstruiert werden, beispielsweise mit dem kleinsten Tripel {\displaystyle (3,\ 4,\ 5)}. Wegen des pythagoreischen Lehrsatzes sind diese Tripel genau die positiven ganzzahligen Lösungen der diophantischen Gleichung

a^{2}+b^{2}=c^{2} (Beschreibung aus: Wikipedia)

Schreiben Sie also ein Programm, das bis zu einer vorgegebenen maximalen Hypotenusenlänge (sagen wir 30) alle pythagoreischen Tipel ausgibt.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

9 Lösung(en)

function isPythagoreanTriple(a, b, c) {
  return (a ** 2 + b ** 2 === c ** 2);
}

let max = prompt('Maximale Hypothenusenlänge:');
for (let c = 1; c <= max; c++)
  for (let b = 1; b <= max; b++)
    for (let a = 1; a <= max; a++)
      if (a < b && isPythagoreanTriple(a, b, c))
        console.log(`${a} | ${b} | ${c}`);
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

const int b_max = 30;

for (var a = 1; a <= b_max; a++)
    for (var b = a; b <= b_max; b++) {
        var t = a * a + b * b;
        var c = (int)Math.Sqrt(t);
        if (c * c == t)
            Console.WriteLine($"({a}, {b}, {c})");
    }
                

Lösung von: Jens Kelm (@JKooP)

#include <vector>
#include <iostream>
#include <tuple>

std::vector<std::tuple<int, int, int>> pythagorean_triple(const int b_max) {
	std::vector<std::tuple<int, int, int>> v;
	for (auto a{ 1 }; a <= b_max; a++) {
		for (auto b{ a }; b <= b_max; b++) {
			auto t{ a * a + b * b };
			auto c{ (int)sqrt(t) };
			if (c * c == t)
				v.push_back(std::make_tuple(a, b, c));
		}
	}
	return v;
}

int main() {
	const int b_max = 30;
	for (const auto& pt : pythagorean_triple(b_max)) {
		std::cout << "(" << std::get<0>(pt) << ", " << std::get<1>(pt) << ", " << std::get<2>(pt) << ")\n";
	}
}
                

Lösung von: Jens Kelm (@JKooP)

// Hier als Funktion für große Werte:
const int b_max = 10_000;
var pt = PythagoreanTriple(b_max).ToList();
pt.ForEach(x => Console.WriteLine(x));

static IEnumerable<(int a, int b, int c)> PythagoreanTriple(int b_max = 1) {
    for (var a = 1; a <= b_max; a++)
        for (var b = a; b <= b_max; b++) {
            var t = a * a + b * b;
            var c = (int)Math.Sqrt(t);
            if (c * c == t)
                yield return (a, b, c);
        }
}
                

Lösung von: Jens Kelm (@JKooP)

#m und n seien beliebige, natürliche Zahlen
#für (m > n) and (m != 0 and n != 0) gilt:
#a = m**2 - n**2
#b = 2mn
#c = m**2 + n**2

import random
max = 1000
counter = 1
while counter < max:
    m = random.randint(1,max)
    n = random.randint(1,max)
    if m > n:
        a = m**2 - n**2
        b = 2 * m * n
        c = m**2 + n**2
        #print(f"Counter: {counter}, beliebig m = {m}, beliebig n = {n}, \ta = {a}, \tb = {b}, \tc = {c}")
        print(f"m = {m}, n = {n}, \ta = {a}, \tb = {b}, \tc = {c}")
    counter+=1
                

Lösung von: Py Thon ()

// Achtung: F#
let pt m =
    let mutable lst = []
    for a in 1 .. m do
        for b in a .. m do
            let t = a * a + b * b
            let c = sqrt(t |> double) |> int
            if c * c = t then lst <- [(a, b, c)] |> List.append lst
    lst

printfn "%A" (pt 30)
                

Lösung von: Jens Kelm (@JKooP)

def find_triples(limit):
    import math
    c_to_a_factor = math.sqrt(1 / 2)
    for c in range(1, limit + 1):
        a_limit = int(c * c_to_a_factor)
        for a in range(1, a_limit + 1):
            b_squared = c**2 - a**2
            b = math.isqrt(b_squared)
            if b**2 == b_squared:
                yield a, b, c

for triple in find_triples(30):
    print(triple)
                

Lösung von: Name nicht veröffentlicht

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
max=25
for a in range(1,max):
    for b in range(a,max):
        z=a*a+b*b
        c=int(z**0.5)
        if z==c*c:
            print("{} {} {}".format(a,b,c))
                

Lösung von: Name nicht veröffentlicht

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
max=25
for a in range(1,max):
    for b in range(a,max):
        z=a*a+b*b
        c=int(z**0.5)
        if z==c*c:
            print("{} {} {}".format(a,b,c))
                

Lösung von: Name nicht veröffentlicht

Verifikation/Checksumme:

3, 4, 5

6, 8, 10

5, 12, 13

9, 12, 15

8, 15, 17

12, 16, 20

7, 24, 25

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Leicht
Webcode: yj0z-vyef
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen