• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szukanie dzielników liczby

42 Warsaw Coding Academy
+1 głos
550 wizyt
pytanie zadane 1 stycznia 2023 w Algorytmy przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Robiąc zadanie z challange olimpijskiego koła informatycznego, natknąłem się na zadanie: https://szkopul.edu.pl/problemset/problem/fof/site/?key=statement

Jest tam napisane, że można znaleźc dzielniki pierwsze liczby w czasie pierwiastek 4 stopnia z n. Tyko jak?

Ja narazie tylko umiem te w pierwiastek 2 stopnia ze poprostu sprawdzam do pierwiastka.
komentarz 1 stycznia 2023 przez TOWaD Mądrala (6,420 p.)
odwrotność pierwiastkowania? 75%
komentarz 1 stycznia 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
w sensie?
komentarz 1 stycznia 2023 przez TOWaD Mądrala (6,420 p.)
a jak funkcja w c++ służy do potęgowania?
komentarz 1 stycznia 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
w sensie pow(x,y), czy szybkie potegowanie?
komentarz 1 stycznia 2023 przez TOWaD Mądrala (6,420 p.)
edycja 2 stycznia 2023 przez TOWaD
75% - to pow jak więcej to musisz pokombinować.

edit 25%- szybkie potęgowanie
komentarz 2 stycznia 2023 przez VBService Ekspert (256,600 p.)

@pasjonat_algorytmiki,  gdzieś przeczytałem, że

Aby obliczyć pierwiastek m-tego stopnia, wystarczy podnieść n do potęgi 1/m

i wygląda, że działa  [ on-line ]

import math

in_ = [ [144,2], [1000000001,3], [4,1] ]
for n, m in in_:
    print(math.floor(math.pow(n, 1/m)))

 

komentarz 2 stycznia 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Tak tak to zadanie zrobiłem, tylko chodzi mi o to jak znaleźć dzielniki pierwsze w O(sqrt4stopnia z n)
komentarz 2 stycznia 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)

@VBService, 

Jeszcze apropo tego zadania, to ten pomysł wydaje się dobry, ale ta funkcja gubi zaokrąglenia bo sa zmiennoprzecinkowe i wchodzi jedynie na 50pkt. Na 100pkt wchodzi wyszukiwanie bianarne po wyniku. Korzystajac z tego ze jesli x^m < n, to wszystkie x-1, x-2 itd nie musimy sprawdzac, a jesli x^m > n, to nie sprawdzamy tez wszystkich wiekszych x. W O(t * log n), mozna jeszcze napisac szybkie potegowanie zeby te potegi liczyl w logu, ale to i tak nie potrzebne bo m <= 5.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 902 wizyt
+2 głosów
2 odpowiedzi 359 wizyt
pytanie zadane 21 kwietnia 2021 w Matematyka, fizyka, logika przez anteq69 Początkujący (260 p.)
0 głosów
3 odpowiedzi 973 wizyt
pytanie zadane 23 lipca 2019 w C i C++ przez KosaTV Obywatel (1,260 p.)

93,382 zapytań

142,382 odpowiedzi

322,540 komentarzy

62,738 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...