Liczby trójkątne

Liczby trójkątne
FM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć,
zastanawiam się jak napisać funkcję, która sprawdzałaby czy dana liczba jest liczbą trójkątną.
Znam generalną zasadę, że liczbę x można uznać za trójkątną jeśli (x*8+1) = pierwiastkowi kwadratowemu z liczby naturalnej, ale nie bardzo wiem jak przełożyć to na kod.

Próbowałem w taki sposób:

if (k*8+1)**0.5 == int:
print("True")
else:
print("False")

ale lewa wynik lewej strony zawsze daje float a nie int przez co zawsze mam False.

Proszę o radę.

  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 121
1
Kopiuj
z = int((k*8+1) ** 0.5)
(k*8+1) ** 0.5 == z
FM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0
Pętliczek napisał(a):
Kopiuj
z = int((k*8+1) ** 0.5)
(k*8+1) ** 0.5 == z

Dziękuję

SI
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
for i in range(100):
    z = ((i * 8) + 1) ** 0.5
    if z == int(z):
        print(i)
T9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 329
0

Zamiast pierwiastkować podnieś (x*8+1) do kwadratu i zobacz czy wyszła liczba naturalna :)

enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
0

A jeżeli chcesz mieć wydajne rozwiązanie, to pip install --user gmpy2, a potem

Kopiuj
import gmpy2
gmpy2.is_square(33**4) # True
gmpy2.is_square(33**5) # False

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.