Re: Math Question....

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22 April 2010 14:48, Dan Joseph <dmjoseph@xxxxxxxxx> wrote:
> On Thu, Apr 22, 2010 at 10:29 AM, Richard Quadling <rquadling@xxxxxxxxxxxxxx
>> 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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux