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()
