Python :: Aufgabe #345
2 Lösungen
Zahl ist Summe von Potenzwerten zur Basis 3
Anfänger - Python
von JKooP
- 18.04.2021 um 12:49 Uhr
Gegeben ist eine Integer-Zahl im Bereich von 1 bis 1.000.000.
Es soll geprüft werden, ob sich diese Zahl als Summe von Potenzwerten
zur Basis 3 darstellen lässt. Die Reihenfolge der Exponenten ist unerheblich.
Beispiele:
n = 12
Lösung: wahr => 12 = 3^1 + 3^2
n = 91
Lösung: Wahr => 3^0 + 3^2 + 3^4
n = 105
Lösung: Falsch
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false zurückgibt.
Viel Spaß
Es soll geprüft werden, ob sich diese Zahl als Summe von Potenzwerten
zur Basis 3 darstellen lässt. Die Reihenfolge der Exponenten ist unerheblich.
Beispiele:
n = 12
Lösung: wahr => 12 = 3^1 + 3^2
n = 91
Lösung: Wahr => 3^0 + 3^2 + 3^4
n = 105
Lösung: Falsch
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false zurückgibt.
Viel Spaß
Lösungen:
"""
#345: Zahl ist Summe von Potenzwerten zur Basis 3
Gegeben ist eine Integer-Zahl im Bereich von 1 bis 1.000.000. Es soll geprüft werden, ob sich diese Zahl als Summe von
Potenzwerten zur Basis 3 darstellen lässt.
"""
def prf_pot3(n):
pot = int(round(n ** (1 / 3.), 0))
print("n =", n, "ist")
for i in range(pot + 1):
if (n - 3 ** pot) >= 0:
n -= 3 ** pot
pot -= 1
if n == 0:
print("wahr")
else:
print("falsch")
def main():
prf_pot3(12)
prf_pot3(91)
prf_pot3(105)
prf_pot3(4782969)
prf_pot3(4782968)
if __name__ == '__main__':
main()
import math
def ist_basis_3(n):
a = math.log(n, 3); rest = (a *100 %100) /100
p = a - rest
print('3^{}'.format(int(p)), end=' ')
n = n - 3**(int(p))
if n > 0:
print('+', end = ' ')
ist_basis_3(n)
return True
beispiele = [12, 91, 105, 1000000]
for n in beispiele:
print('\nn=',n)
print('\tLösung:',ist_basis_3(n))
