Gość_piotrek
18.04.2005, 21:10:43
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
18.04.2005, 21:20:02
Nie wiem czy jest ale łatwo taką napisać, używając dzielenia modulo.
Pigula
18.04.2005, 22:25:23
to najlatwiej zrobic z
algorytm Euklidesa gdzies na google to jest
Gość_piotrek
18.04.2005, 22:56:01
to znajduje dzielnik tylko dla 2 liczb ja chce tylko dla 1
dr_bonzo
19.04.2005, 07:24:19
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
19.04.2005, 07:29:10
ej sorry jezeli chcesz jednej liczby to najwiekszym dzielnikiem jest ona sama przynajmniej tak mowia wszystkie prawa matematyczne!! zle sformulowales pytanie
dr_bonzo
19.04.2005, 10:29:58
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
19.04.2005, 10:58:12
powiedzmy mam taką liczbę 3235235256363
przez co ja podzielic zeby wyszła mniejsza? przez najwiekszy jjej dzielnik jak to obliczyc.
kszychu
19.04.2005, 11:03:27
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
19.04.2005, 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 )
kszychu
19.04.2005, 11:32:28
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
19.04.2005, 16:04:39
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
19.04.2005, 18:33:01
<?php
function getHighestDivider( $intNumber )
{
for ( $i = 0; $i < $intNumber; $i++ )
{
if ( $intNumber % $i === 0 )
{
return $intNumber / $i;
}
}
}
?>
// algorytm krzycha
kszychu
19.04.2005, 18:49:34
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.