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

ocena kodu - rozkład na czynniki

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
694 wizyt
pytanie zadane 9 października 2022 w Python przez techno16 Gaduła (4,780 p.)

Zrobiłem w pythonie algorytm rozkładu liczby na czynniki pierwsze. Wynik myślę że jest dobry (nie trafiłem jeszcze na żaden błąd), więc proszę o code review cool czy można to w lepszy sposób zapisać itp.

def rozklad(n):
    dzielniki = []
    print(n)
    while (n % 2) == 0:
        n /= 2
        dzielniki.append(2)
        print(int(n))
    k = n
    n = n / n
    dzielniki.append(k)
    print(int(n))
    return print(dzielniki)


rozklad(56)

 

komentarz 9 października 2022 przez Oscar Nałogowiec (29,340 p.)

W linii 9 na pewno ma byc:

    n = n / n

?

A w szóstej zawsze dodajesz 2? To ma pewno daje czynniki pierwsze?

 

komentarz 9 października 2022 przez techno16 Gaduła (4,780 p.)

tak, jeżeli n nie da się podzielić przez 2 to się dzieli przez siebie i wychodzi 1

inspirowałem się wikipedią

komentarz 9 października 2022 przez Oscar Nałogowiec (29,340 p.)
To po co dzielić kiedy z góry wiadomo ile wyjdzie?
komentarz 9 października 2022 przez Whistleroosh Maniak (57,360 p.)

@techno16,  inspirowałeś się wikipedią, ale nie przeczytałeś dokładnie jak działa algorytm. Masz tam jasno napisane 

Szukamy najmniejszej liczby pierwszej dzielącej daną liczbę

i potem dzielimy przez znalezioną liczbe pierwszą. To że w podanym tam przykładzie wystarczyło dzielić przez 2 nie znaczy, że da sie tak zrobić dla każdej innej liczby

komentarz 9 października 2022 przez Nelson89 Dyskutant (7,720 p.)

Cześć,

@techno16, linia 12 - to był zmienił, bo przynajmniej ja nie widzę powodu, by zwracać printa.

Pozdrawiam,

Nelson

komentarz 9 października 2022 przez techno16 Gaduła (4,780 p.)

@Whistleroosh, to jak znaleźć najmniejszą liczbę? Operatorem modulo?

komentarz 9 października 2022 przez Whistleroosh Maniak (57,360 p.)

Wystarczy że iterujesz sie po liczbach od 2 do sqrt(n) i sprawdzasz czy ta liczba dzieli n.

implementacja w c++

komentarz 9 października 2022 przez techno16 Gaduła (4,780 p.)

dzięki wielkie za pomoc heart

komentarz 10 października 2022 przez tmar1212 Bywalec (2,600 p.)

@Whistleroosh wystaczy iterować po liczbach pierwszych od zero do pierwiastka z n.

komentarz 10 października 2022 przez Whistleroosh Maniak (57,360 p.)
Tak, ale trzeba wiedzieć które są pierwsze. Więc najprościej przeiterować sie po wszystkich od 2 do sqrt(n) i jeżeli aktualna liczba to x i x dzieli n, to n /= x. Ale jak mamy zbiór liczb pierwszych to rzeczywiście wystarczy po nich przejść.

1 odpowiedź

0 głosów
odpowiedź 10 października 2022 przez tmar1212 Bywalec (2,600 p.)

Wynik myślę że jest dobry (nie trafiłem jeszcze na żaden błąd)

100 -> [2, 2, 25.0] ??

komentarz 10 października 2022 przez Oscar Nałogowiec (29,340 p.)
Nie, to nie jest dobry wynik. 25 to nie jest liczba pierwsza, 25 = 5 * 5.

Prawidłowy rozkład liczba 100 na czynniki pierwsze to 2,2,5,5.

Twój program chyba po prostu sprawdza ile razy można daną liczbę podzielić przez 2.
komentarz 10 października 2022 przez tmar1212 Bywalec (2,600 p.)
Własnie dlatego OP'a zapytałem:)

Podobne pytania

0 głosów
0 odpowiedzi 421 wizyt
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 16 stycznia 2023 w C i C++ przez piotr_domanski Bywalec (2,260 p.)
0 głosów
1 odpowiedź 295 wizyt

93,164 zapytań

142,176 odpowiedzi

321,938 komentarzy

62,493 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 664p. - Marcin Putra
  5. 662p. - Łukasz Eckert
  6. 649p. - Michal Drewniak
  7. 641p. - rucin93
  8. 641p. - rafalszastok
  9. 629p. - Piotr Aleksandrowicz
  10. 629p. - Adrian Wieprzkowicz
  11. 621p. - Dawid128
  12. 611p. - ksalekk
  13. 606p. - Mariusz Fornal
  14. 602p. - Michał Telesz
  15. 597p. - Hubert Chęciński
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...