Пример #1
0
 /**
  * Note: This function has a big weakness, that is, if you provide it with a huge prime to decompose, it'll basically
  * have to generate all primes up to that number to discover it is prime itself...
  * @param int $number
  * @return int[] an array of prime => count
  */
 public static function solve($number)
 {
     $factors = [];
     foreach (Prime::generator() as $prime) {
         // We should always end at 1
         if ($number <= 1) {
             break;
         }
         if (self::isPrime($number)) {
             $factors[$number] = 1;
             break;
         }
         if ($number % $prime !== 0) {
             continue;
         }
         if (!isset($factors[$prime])) {
             $factors[$prime] = 0;
         }
         // Divide the number by this factor by as many time as possible
         while ($number % $prime === 0) {
             ++$factors[$prime];
             $number /= $prime;
         }
     }
     return $factors;
 }
Пример #2
0
function q7($number)
{
    $count = 0;
    foreach (Prime::generator() as $prime) {
        ++$count;
        if ($count === $number) {
            return $prime;
        }
    }
}
Пример #3
0
function q10($number)
{
    $result = 0;
    foreach (Prime::generator() as $prime) {
        if ($prime >= $number) {
            break;
        }
        $result += $prime;
    }
    return $result;
}