On 22 April 2010 14:48, Dan Joseph <[email protected]> wrote:
> On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling <[email protected]
>> 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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php