irrationale Zahlen, python?
hey, weiß jemand wie man diese Aufgabe mit Python programmiert? Danke
3 Antworten
Beispielsweise so:
from math import sqrt, pi
def gcd(a, b):
"""Berechnet den größten gemeinsamen Teiler zweier ganzer Zahlen a und b
mit Hilfe des euklidischen Algorithmus"""
while b:
a, b = b, a % b
return(a)
lower = sqrt(17)-4
upper = pi*pi-9
n = 0
for b in range(1, 11):
for a in range(1, 11):
if lower < a/b < upper and gcd(a, b) == 1:
n += 1
print(f"{a}/{b}")
print(f"Gesuchte Anzahl: {n}")
Ausgabe dieses Python-Skripts:
1/2
1/3
2/3
1/4
3/4
1/5
2/5
3/5
4/5
1/6
5/6
1/7
2/7
3/7
4/7
5/7
6/7
1/8
3/8
5/8
2/9
4/9
5/9
7/9
3/10
7/10
Gesuchte Anzahl: 26
============
Meine Vorgehensweise dabei:
Definiere eine Funktion gcd(a, b), welche den größten gemeinsamen Teiler zweier Zahlen a, b zurückgibt. Dann kann man mit gcd(a, b) == 1 prüfen, ob der Bruch a/b vollständig gekürzt ist.
Mit einer (bzw. zwei) for-Schleife(n) für a und b gehe ich dann die Brüche a/b durch und überprüfe jeweils, ob a/b im entsprechenden Intervall liegt und der Bruch vollständig gekürzt ist.
Zwar vermutlich nicht so, wie vom Aufgabensteller erwartet, aber einfach:
import math
a = math.sqrt(17) - 4
b = math.pi * math.pi - 9
n = 0
# alle gekürzten Brüche >0 und <1 mit den Nennern 2 bis 10:
numbers = [1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5,
1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8,
1/9, 2/9, 4/9, 5/9, 7/9, 8/9, 1/10, 3/10, 7/10, 9/10]
for x in numbers:
if x > a and x < b:
n += 1
print(n, 'Brüche')
Ich kann leider fast kein Python, aber generell würde ich zwei geschachtelte for-Schleifen verwenden, eine für den Zähler (von 1 bis 10) und eine für den Nenner (ausprobieren, welcher Bereich Sinn macht), und dann mit einer if-Bedingung prüfen, ob der Bruch zwischen den beiden Zahlen liegt. Wenn dann noch der ggT von Zähler und Nenner 1 ist, könnte eine Zählvariable um eins nach oben gesetzt werden.