Esempio n. 1
0
class Generator:
    def __init__(self):
        self.repo = SqlitePrimesRepository()
        self.converter = Converter()

    def build_sample(self, sample_size, max_value):
        x = list()
        y = list()
        for i in range(ceil(sample_size / 2)):
            non_prime = self.random_non_prime(3, max_value)
            non_prime_string = self.converter.number_to_string(non_prime)
            x.append(self.converter.string_to_one_hot(non_prime_string))
            y.append([0])
            prime = self.random_prime(3, max_value)
            prime_string = self.converter.number_to_string(prime)
            x.append(self.converter.string_to_one_hot(prime_string))
            y.append([1])
        # This is important, need to use numpy arrays.
        x, y = array(x), array(y)
        return x, y

    def random_non_prime(self, lower, upper):
        number = random.randint(lower, upper)
        is_prime = self.repo.find(number)
        if is_prime is None:
            return number
        else:
            return self.random_non_prime(lower, upper)

    def random_prime(self, lower, upper):
        number = random.randint(lower, upper)
        return int(self.repo.find_all_less(number).fetchone()[0])
Esempio n. 2
0
 def test_is_prime(self):
     repo = SqlitePrimesRepository()
     for number in range(0, 200):
         try:
             check_fast = repo.is_prime(number)
             check_slow = sympy.isprime(number)
             print(number, check_fast, check_slow)
             self.assertEqual(check_fast, check_slow)
         except NotEnoughPrimesException as e:
             print(e.message)
         except IsLessThan2Exception as e:
             print(e.message)
Esempio n. 3
0
 def test_save(self):
     repo = SqlitePrimesRepository()
     for number in range(0, 200):
         try:
             repo.save(number)
             print(f'Adding number {number}')
         except NotAPrimeException as e:
             print(e.message)
         except PrimeAlreadySavedException as e:
             print(e.message)
         except NotEnoughPrimesException as e:
             print(e.message)
         except IsLessThan2Exception as e:
             print(e.message)
Esempio n. 4
0
#!/usr/bin/python
import sys
import time

from src.repositories.SqlitePrimesRepository import SqlitePrimesRepository, NotAPrimeException, \
    PrimeAlreadySavedException, NotEnoughPrimesException, IsLessThan2Exception
from src.utilities.text_utility import text_out

repo = SqlitePrimesRepository()
upper_limit = 10000000
start_time = time.time()
print(f"Current number of primes found: {repo.count()}")
repo = SqlitePrimesRepository()
for number in range(0, upper_limit):
    try:
        text_out(f'Checking number {number}')
        repo.save(number)
        text_out(f'Adding number {number}')
    except NotAPrimeException as e:
        text_out(e.message)
    except PrimeAlreadySavedException as e:
        text_out(e.message)
    except NotEnoughPrimesException as e:
        text_out(e.message)
    except IsLessThan2Exception as e:
        text_out(e.message)
sys.stdout.write('\n')
print(f"Found {repo.count()} primes in {time.time() - start_time} seconds.")
sys.stdout.write('\n')
repo.close()
Esempio n. 5
0
 def test_count_all_less(self):
     repo = SqlitePrimesRepository()
     number = 1000000
     found = repo.count_all_less(number)
     print(f'Found {found} primes less than {number}')
Esempio n. 6
0
 def test_find_all_less(self):
     repo = SqlitePrimesRepository()
     found = repo.find_all_less(100).fetchall()
     print(len(found))
Esempio n. 7
0
 def test_count(self):
     repo = SqlitePrimesRepository()
     count = repo.count()
     print(f"Found {count} primes.")
     self.assertTrue(count > 0)
     repo.close()
Esempio n. 8
0
 def test_find(self):
     repo = SqlitePrimesRepository()
     prime = repo.find(3)
     self.assertTrue(prime == 3)
     prime = repo.find(4)
     self.assertIsNone(prime)
Esempio n. 9
0
 def test_find_all(self):
     repo = SqlitePrimesRepository()
     primes = repo.find_all()
     self.assertTrue(len(primes) > 0)
Esempio n. 10
0
 def test_init(self):
     repo = SqlitePrimesRepository()
     self.assertTrue(os.path.exists(repo.file))
Esempio n. 11
0
 def __init__(self):
     self.repo = SqlitePrimesRepository()
     self.converter = Converter()