def problem47(): """ Distinct primes factors Find the first four consecutive integers to have four distinct prime factors. What is the first of these numbers? """ number = 2 * 3 * 5 * 7 while True: first_number = number second_number = number + 1 third_number = number + 2 fourth_number = number + 3 if len(mathhelper.prime_divisor_list(fourth_number)) != 4: number += 4 continue if len(mathhelper.prime_divisor_list(third_number)) != 4: number += 3 continue if len(mathhelper.prime_divisor_list(second_number)) != 4: number += 2 continue if len(mathhelper.prime_divisor_list(first_number)) != 4: number += 1 continue return first_number
def test_prime_divisor_list(self): self.assertEqual(list(mathhelper.prime_divisor_list(-5)), [[5]]) self.assertEqual(list(mathhelper.prime_divisor_list(-4)), [[2, 2]]) self.assertEqual(list(mathhelper.prime_divisor_list(-1)), []) self.assertEqual(list(mathhelper.prime_divisor_list(0)), []) self.assertEqual(list(mathhelper.prime_divisor_list(1)), []) self.assertEqual(list(mathhelper.prime_divisor_list(2)), [[2]]) self.assertEqual(list(mathhelper.prime_divisor_list(3)), [[3]]) self.assertEqual(list(mathhelper.prime_divisor_list(4)), [[2, 2]]) self.assertEqual(list(mathhelper.prime_divisor_list(5)), [[5]]) self.assertEqual(list(mathhelper.prime_divisor_list(6)), [[2], [3]]) self.assertEqual(list(mathhelper.prime_divisor_list(12)), [[2, 2], [3]]) self.assertEqual(list(mathhelper.prime_divisor_list(30)), [[2], [3], [5]]) self.assertEqual(list(mathhelper.prime_divisor_list(-5, False)), [5]) self.assertEqual(list(mathhelper.prime_divisor_list(-4, False)), [2, 2]) self.assertEqual(list(mathhelper.prime_divisor_list(-1, False)), []) self.assertEqual(list(mathhelper.prime_divisor_list(0, False)), []) self.assertEqual(list(mathhelper.prime_divisor_list(1, False)), []) self.assertEqual(list(mathhelper.prime_divisor_list(2, False)), [2]) self.assertEqual(list(mathhelper.prime_divisor_list(3, False)), [3]) self.assertEqual(list(mathhelper.prime_divisor_list(4, False)), [2, 2]) self.assertEqual(list(mathhelper.prime_divisor_list(5, False)), [5]) self.assertEqual(list(mathhelper.prime_divisor_list(6, False)), [2, 3]) self.assertEqual(list(mathhelper.prime_divisor_list(12, False)), [2, 2, 3]) self.assertEqual(list(mathhelper.prime_divisor_list(30, False)), [2, 3, 5])