Liczby trójkątne

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ę.

1
z = int((k*8+1) ** 0.5)
(k*8+1) ** 0.5 == z
0
Pętliczek napisał(a):
z = int((k*8+1) ** 0.5)
(k*8+1) ** 0.5 == z

Dziękuję

1
for i in range(100):
    z = ((i * 8) + 1) ** 0.5
    if z == int(z):
        print(i)
0

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

0

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1