Re: Math Question....
| From: | Richard Quadling | Date: | Fri, 23 Apr 2010 09:02:44 +0000 |
| Subject: | Re: Math Question.... | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-304460@lists.php.net to get a copy of this message | ||
On 22 April 2010 17:47, Developer Team <dev@thebat.net> wrote:
> Awesome source.
> Thanks
>
> On 4/22/10, Richard Quadling <rquadling@googlemail.com> wrote:
>> On 22 April 2010 14:48, Dan Joseph <dmjoseph@gmail.com> wrote:
>>> On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling
>>> <rquadling@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 : fê=ñ¢LäÏ
>> £süã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
>>
>>
>
Thank you. It was a quick knock up, so could probably be optimized a
little more.
It will also not work beyond PHP_MAX_INT, unless the code is converted
to use the BCMath or GMP extension.
--
-----
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