Python :: Aufgabe #249
4 Lösungen

Die Collatz-Sequenz (3n+1)
Anfänger - Python
von DragStar
- 23.03.2020 um 09:34 Uhr
Schreibe ein Programm, welches die Eingabe einer Zahl anfordert und dann von dieser Zahl die Collatz-Sequenz ausgibt.
Lösungen:

def compute(num): if num % 2 == 0: return int(num/2) else: return int(3*num + 1) liste=[] num = int(input("Zahl > 0: ")) while len(liste) < 3: liste.append(num) num = compute(num) while liste[-1] != 1 and liste[-2] != 2 and liste[-3] != 4: liste.append(num) num = compute(num) print("Collatz-Sequenz:",liste)

# Collatz-Sequenz n = int(input("Geben Sie eine natürliche Zahl größer Null ein: ")) while n !=1: if n%2 == 0: n = int(n/2) elif n%2 ==1: n = int(3*n+1) print(n)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Aufgabe: # Schreibe ein Programm, welches die Eingabe einer Zahl anfordert und dann von dieser Zahl die Collatz-Sequenz ausgibt. while True: try: zahl = int(input('Geben Sie eine natürliche Zahl ein: ')) except ValueError: continue if zahl < 1: None else: break reihe = [] reihe.append(zahl) while True: if zahl % 2 == 0: zahl = round(zahl / 2) else: zahl = 3 * zahl + 1 reihe.append(zahl) if zahl == 1: break print(reihe)
Ergebnis bei Startwert von 25:
[25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

import matplotlib.pyplot as plt x = [] y = [] i = 0 start_Zahl = int(input("Startzahl eingeben \n ")) while True: if y.__contains__(4): break y.append(start_Zahl) x.append(i) if int(start_Zahl) % 2 == 0: start_Zahl = int(start_Zahl) / 2 y.append(start_Zahl) i += 1 x.append(i) else: start_Zahl = start_Zahl * 3 + 1 y.append(start_Zahl) i += 1 x.append(i) else: print("Das ist keine Zahl") plt.bar(x, height=y, color='g') plt.show()