Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zadania na liczbach
Forum PHP.pl > Forum > Przedszkole
Gość_piotrek
witam jest jakas funkcja która znajdzie na wieksze dzielnik dla danej liczby



np najwiekszym zielnikiem dla liczby 8 to 4 ( 8 : 8 to bez sens ) .. wie moze ktos o co mi chodzi
mdco
Nie wiem czy jest ale łatwo taką napisać, używając dzielenia modulo.
Pigula
to najlatwiej zrobic z algorytm Euklidesa gdzies na google to jest smile.gif
Gość_piotrek
to znajduje dzielnik tylko dla 2 liczb ja chce tylko dla 1
dr_bonzo
WYmyslilem cos takiego:
X = liczba, rozpisujesz ja na czynniki pierwsze
Kod
X = 8
8 | 2
4 | 2
2 | 2
1 | =

pomijasz pierwsza 2ke z gory i mnozysz pozostale czynniki:
2 x 2 = 4.

X = 34
34 | 2
17 | 17
1   | =

max dzielnik = 17


chyba dziala, nie mialem czasu zeby blizej sie przyjzec i zastanowic.
Pigula
ej sorry jezeli chcesz jednej liczby to najwiekszym dzielnikiem jest ona sama przynajmniej tak mowia wszystkie prawa matematyczne!! zle sformulowales pytanie
dr_bonzo
Najwiekszy dzielnik liczby to oczywiscie sama ta liczba, alo on napisal ze nie o to chodzi
Cytat
8 to 4 ( 8 : 8 to bez sens ) .. wie moze ktos o co mi chodzi
Gość_piotrek
powiedzmy mam taką liczbę 3235235256363


przez co ja podzielic zeby wyszła mniejsza? przez najwiekszy jjej dzielnik jak to obliczyc.
kszychu
Dla liczb parzystych to banał: dzielisz liczbę na 2 i już masz. Dla nieparzystych jest to bardziej kłopotliwe. Ja bym to sprawdzał w pętli, dzieląc tę liczbę przez kolejne, coraz to większe liczby pierwsze. Jeśli wynik dzielenia jest liczbą całkowitą, to mamy liczbę. Jesli nie, sprawdzamy dalej. Właściwie, to ten algorytm można rozciągnąć też na liczby parzyste.
Musisz tylko w pętli zaimplementować sobie jakiś algorytm generujący liczby pierwsze, bo trzymanie ich w tablicy, jakkolwiek szybkie, mogłoby okazać się niewystarczające.
No i może się zdażyć, że trafisz na liczbę pierwszą, a wtedy nie będzie ona posiadała dzielnika spełniającego Twoje oczekiwania.
Guest
ale jak 2 nie zawsze jest najwiekszym dzielnikiem
np wedlug Ciebie najwiekszym dzielnikiem dla 8 to 2? a dla mnie to 4 ( dzielenie prez samom siebie odpada z gry )
kszychu
Cytat(Guest @ 2005-04-19 11:24:11)
ale jak 2 nie zawsze jest najwiekszym dzielnikiem
np wedlug Ciebie najwiekszym dzielnikiem dla 8 to 2? a dla mnie to 4 ( dzielenie prez samom siebie odpada z gry )

Nie zrozumiałes mnie. DZIELĄC PRZEZ 2 OTRZYMASZ NAJWIKSZY DZIELNIK! Masz przecież zależność; dzieląc liczbę przez jej najmniejszy dzielnik w wyniku otrzymasz jej największy dzielnik i odwrotnie.
Pigula
do generowania liczb pierwszych to sie nadaje sito arystotelesa tu masz algorytm odrazu w php ale nie wiem czy nie bedziesz musial go przerobic do swoich potrzeb
dr_bonzo
  1. <?php
  2. function getHighestDivider( $intNumber )
  3. {
  4. for ( $i = 0; $i < $intNumber; $i++ )
  5. {
  6. if ( $intNumber % $i === 0 )
  7. {
  8. return $intNumber / $i;
  9. }
  10. }
  11. }
  12. ?>

// algorytm krzycha
kszychu
Cytat(dr_bonzo @ 2005-04-19 18:33:01)
// algorytm krzycha

@dr_bonzo: niezupełnie. W moim założeniu było dzielenie nie przez kolejne liczby aż do $intNumber, a przez kolejne LICZBY PIERWSZE aż do $intNumber. Reszta jest taka jak w moich założeniach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.