On 22 April 2010 14:48, Dan Joseph <dmjos...@gmail.com> wrote:
> On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling <rquadl...@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

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to