Liczby trójkątne

Liczby trójkątne
FM
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 8 lat
  • 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:prawie 8 lat
  • Ostatnio:11 dni
  • Postów:121
1
Kopiuj
z = int((k*8+1) ** 0.5)
(k*8+1) ** 0.5 == z
edytowany 4x, ostatnio: Pętliczek
FM
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 8 lat
  • 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:prawie 14 lat
  • Ostatnio:około 7 godzin
1
Kopiuj
for i in range(100):
    z = ((i * 8) + 1) ** 0.5
    if z == int(z):
        print(i)
Guaz
To lepszy sposób, zrzutować na int zamiast liczyć dwukrotnie :)
T9
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 6 lat
  • Postów:329
0

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

SI
W ten sposób każde całkowite x da ci wynik pozytywny, bez sensu.
T9
czyli dobrze, autor napisał że (x*8+1) = sqrt(JakaśLiczbaNatrualna), a każda liczba naturalna jest pierwiastkiem innej liczby naturalnej
SI
Autor się pomylił, wynik ma być liczbą kwadratową, czyli mieć całkowity pierwiastek. Zresztą gdybyś miał rację, to dodawanie 1 do wyniku mnożenia nie miało by sensu. Po dodaniu jedynki każda liczba całkowita pozostanie całkowita, a ułamek ułamkiem.
Guaz
Przeczytaj definicję zagadnienia przed wypowiedzią. W tym przypadku liczby trójkątnej :). Autor się wypowiedział dwuznacznie, więc warto wiedzieć o co chodziło przed własną wypowiedzią :). Sig ma rację.
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:1027
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.