Example #1
0
    def __get_value(index):
        """
        Возвращает простое число с порядковым номером index.

        При первом обращении вычисляет все MAX_INDEX первых простых и кеширует их.


        >>> prime = PrimeNumber(index=10)
        >>> prime.value
        29
        >>> prime.index = 2
        >>> prime.value
        3
        >>> prime.index = 5
        >>> prime.value
        11
        """
        from django.core.cache import cache
        from primes.computing.prime_sieve import get_first_primes

        CACHE_ID = 'primes'

        primes = cache.get(CACHE_ID)
        if primes is None:
            primes = get_first_primes(settings.MAX_INDEX)
            cache.set(CACHE_ID, primes, None)

        return primes[index - 1]
Example #2
0
 def testIndexed(self):
     self.assertItemsEqual([2, 3], prime_sieve.get_first_primes(2))
     self.assertItemsEqual([2, 3, 5, 7, 11], prime_sieve.get_first_primes(5))
     self.assertItemsEqual([2, 3, 5, 7, 11, 13, 17, 19, 23, 29], prime_sieve.get_first_primes(10))
     self.assertItemsEqual([], prime_sieve.get_first_primes(0))
     self.assertRaises(ValueError, prime_sieve.get_first_primes, -1)