From: "Jo�o C�ndido de Souza Neto" on 22 Apr 2010 10:40 I�ll try this again: for ($g = $maxpergroup; $g > 0; $g--) { if ($items mod $g <> 0) continue; $Groups = $items div $g; break; } Hope it helps. ""Jo�o C�ndido de Souza Neto"" <joao(a)consultorweb.cnt.br> escreveu na mensagem news:05.36.21218.06D50DB4(a)pb1.pair.com... >I think today is not may day to write. hehehe > > sorry. > ""Jo�o C�ndido de Souza Neto"" <joao(a)consultorweb.cnt.br> escreveu na > mensagem news:12.B5.21218.F0D50DB4(a)pb1.pair.com... >> there�s an error in the forget the former: >> >> for ($g = $maxpergroup; $g > 0; $g--) { >> if ($items mod $g <> 0) continue; >> $Groups = $items div $g; >> } >> >> >> ""Jo�o C�ndido de Souza Neto"" <joao(a)consultorweb.cnt.br> escreveu na >> mensagem news:87.84.21218.63C50DB4(a)pb1.pair.com... >>> for ($g = $maxpergroup; $g > 0; $g++) { >>> if ($items mod $g <> 0) continue; >>> $Groups = $items div $g; >>> } >>> >>> Maybe it can helps you. >>> >>> "Dan Joseph" <dmjoseph(a)gmail.com> escreveu na mensagem >>> news:q2oa20394491004220707x980cef5ej2b310c97d123056b(a)mail.gmail.com... >>>> Howdy, >>>> >>>> This is a math question, but I'm doing the code in PHP, and have >>>> expunged >>>> all resources... hoping someone can guide me here. For some reason, I >>>> can't >>>> figure this out. >>>> >>>> I want to take a group of items, and divide them into equal groups >>>> based on >>>> a max per group. Example. >>>> >>>> 1,252,398 -- divide into equal groups with only 30 items per group max. >>>> >>>> Can anyone guide me towards an algorithm or formula name to solve this? >>>> PHP >>>> code or Math stuff is fine. Either way... >>>> >>>> Thanks... >>>> >>>> -- >>>> -Dan Joseph >>>> >>>> www.canishosting.com - Unlimited Hosting Plans start @ $3.95/month. >>>> Promo >>>> Code "NEWTHINGS" for 10% off initial order >>>> >>>> http://www.facebook.com/canishosting >>>> http://www.facebook.com/originalpoetry >>>> >>> >>> >> >> > >
From: Dan Joseph on 22 Apr 2010 10:48 On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling <rquadling(a)googlemail.com > wrote: > > > > It sounds like you are looking for factors. > > > > > http://www.algebra.com/algebra/homework/divisibility/factor-any-number-1.solver > > > > Solution by Find factors of any number > > > > 1252398 is NOT a prime number: 1252398 = 2 * 3 * 7 * 29819 > > Work Shown > > > > 1252398 is divisible by 2: 1252398 = 626199 * 2. > > 626199 is divisible by 3: 626199 = 208733 * 3. > > 208733 is divisible by 7: 208733 = 29819 * 7. > > 29819 is not divisible by anything. > > > > So 29819 by 42 (7*3*2) > > > > would be a route. > > Aha. Missed the "30" bit. > > So, having found the factors, you would need to process them to find > the largest combination under 30. > > 2*3 > 2*3*7 > 2*7 > 3*7 > > are the possibilities (ignoring any number over 30). > > Of which 3*7 is the largest. > > So, 1,252,398 divided by 21 = 59,638 > > > Is that the sort of thing you are looking for? > > Yes, that looks exactly what like what I'm looking for. I'm going to try and wake up the algebra side of my brain that hasn't been used in years and see if I can digest all this. For the 2, 3, and 7, that is based solely on the last number being divisible by a prime number? Joao, Jason, thanks for the code. -- -Dan Joseph www.canishosting.com - Unlimited Hosting Plans start @ $3.95/month. Promo Code "NEWTHINGS" for 10% off initial order http://www.facebook.com/canishosting http://www.facebook.com/originalpoetry
From: Peter van der Does on 22 Apr 2010 10:49 On Thu, 22 Apr 2010 10:17:10 -0400 Dan Joseph <dmjoseph(a)gmail.com> wrote: > On Thu, Apr 22, 2010 at 10:12 AM, Stephen <stephen-d(a)rogers.com> > wrote: > > > 1,252,398 DIV 30 = 41,746 groups of 30. > > > > 1,252,398 MOD 30 = 18 items in last group > > > Well, the only problem with going that route, is the one group is not > equally sized to the others. 18 is ok for a group in this instance, > but if it was a remainder of only 1 or 2, there would be an issue. > Which is where I come to looking for a the right method to break it > equally. > My take on it: $Items=1252398; $MaxInGroup=30; for ($x=$MaxInGroup; $x>1;$x--) { $remainder=$Items % $x; // Change 17 to the max amount allowed in the last group if ($remainder == 0 || $remainder >= 17) { // $groups = (int) ($Items /$x)+1; echo $groups."\n"; echo $remainder; break; } } -- Peter van der Does GPG key: E77E8E98 IRC: Ganseki on irc.freenode.net Twitter: @petervanderdoes WordPress Plugin Developer Blog: http://blog.avirtualhome.com Forums: http://forums.avirtualhome.com Twitter: @avhsoftware
From: Peter van der Does on 22 Apr 2010 10:59 On Thu, 22 Apr 2010 10:49:11 -0400 Peter van der Does <pvanderdoes(a)gmail.com> wrote: > > My take on it: > > $Items=1252398; > $MaxInGroup=30; > for ($x=$MaxInGroup; $x>1;$x--) { > $remainder=$Items % $x; > // Change 17 to the max amount allowed in the last group > if ($remainder == 0 || $remainder >= 17) { // > $groups = (int) ($Items /$x)+1; > echo $groups."\n"; > echo $remainder; > break; > } > } > Bugfixed LOL: $Items=1252398; $MaxInGroup=30; for ($x=$MaxInGroup; $x>1;$x--) { $remainder=$Items % $x; // Change 17 to the max amount allowed in a group if ($remainder == 0 || $remainder >= 17) { $groups = (int) ($Items /$x); if ($remainder > 0 ) { $groups++; } echo $groups."\n"; echo $remainder; break; } } -- Peter van der Does GPG key: E77E8E98 IRC: Ganseki on irc.freenode.net Twitter: @petervanderdoes WordPress Plugin Developer Blog: http://blog.avirtualhome.com Forums: http://forums.avirtualhome.com Twitter: @avhsoftware
From: Richard Quadling on 22 Apr 2010 12:16 On 22 April 2010 14:48, Dan Joseph <dmjoseph(a)gmail.com> wrote: > On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling <rquadling(a)googlemail.com >> wrote: > >> Â > >> > It sounds like you are looking for factors. >> > >> > >> http://www.algebra.com/algebra/homework/divisibility/factor-any-number-1..solver >> > >> > Solution by Find factors of any number >> > >> > 1252398 is NOT a prime number: 1252398 = 2 * 3 * 7 * 29819 >> > Work Shown >> > >> > 1252398 is divisible by 2: 1252398 = 626199 * 2. >> > 626199 is divisible by 3: 626199 = 208733 * 3. >> > 208733 is divisible by 7: 208733 = 29819 * 7. >> > 29819 is not divisible by anything. >> > >> > So 29819 by 42 (7*3*2) >> > >> > would be a route. >> >> Aha. Missed the "30" bit. >> >> So, having found the factors, you would need to process them to find >> the largest combination under 30. >> >> 2*3 >> 2*3*7 >> 2*7 >> 3*7 >> >> are the possibilities (ignoring any number over 30). >> >> Of which 3*7 is the largest. >> >> So, 1,252,398 divided by 21 = 59,638 >> >> >> Is that the sort of thing you are looking for? >> >> > > Yes, that looks exactly what like what I'm looking for. Â I'm going to try > and wake up the algebra side of my brain that hasn't been used in years and > see if I can digest all this. > > For the 2, 3, and 7, that is based solely on the last number being divisible > by a prime number? > > Joao, Jason, thanks for the code. > > -- > -Dan Joseph > > www.canishosting.com - Unlimited Hosting Plans start @ $3.95/month. Â Promo > Code "NEWTHINGS" for 10% off initial order > > http://www.facebook.com/canishosting > http://www.facebook.com/originalpoetry > This seems to be working ... <?php function findBestFactors($Value, $GroupSize, array &$Factors = null) { $Factors = array(); foreach(range(1, ceil(sqrt($Value))) as $Factor) { if (0 == ($Value % $Factor)) { if ($Factor <= $GroupSize) { $Factors[] = $Factor; } if ($Factor != ($OtherFactor = ($Value / $Factor)) && $OtherFactor <= $GroupSize) { $Factors[] = $OtherFactor; } } if ($Factor >= $GroupSize) { break; } } rsort($Factors); return reset($Factors); } echo findBestFactors($argv[1], $argv[2], $Factors), PHP_EOL; ?> factors 1252398988 5000 outputs ... 4882 and 21 for your value 1252398 -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 5 Prev: Updating cli executable on MS-Windows Next: Replace a space with a newline every 2 spaces |