aboutsummaryrefslogtreecommitdiff
path: root/challenge-169/sgreen/python/ch-1.py
diff options
context:
space:
mode:
authorRyan Thompson <rjt-pl@users.noreply.github.com>2022-06-16 17:10:46 -0600
committerGitHub <noreply@github.com>2022-06-16 17:10:46 -0600
commitc92803076d8d8f9fee7bb945e0e268399e32cdd3 (patch)
treef59a55e4a378f42fa80a5b6f13238b12088e7d4b /challenge-169/sgreen/python/ch-1.py
parent40198d275c123f30a185aea4da69f2c3b9424dab (diff)
parent7c2fa584618da574d42b1713c3c343423991c781 (diff)
downloadperlweeklychallenge-club-c92803076d8d8f9fee7bb945e0e268399e32cdd3.tar.gz
perlweeklychallenge-club-c92803076d8d8f9fee7bb945e0e268399e32cdd3.tar.bz2
perlweeklychallenge-club-c92803076d8d8f9fee7bb945e0e268399e32cdd3.zip
Merge branch 'manwar:master' into master
Diffstat (limited to 'challenge-169/sgreen/python/ch-1.py')
-rwxr-xr-xchallenge-169/sgreen/python/ch-1.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/challenge-169/sgreen/python/ch-1.py b/challenge-169/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..dee277497c
--- /dev/null
+++ b/challenge-169/sgreen/python/ch-1.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+
+import math
+
+
+def is_prime(number):
+ '''Return true or false if the number is a prime'''
+ if number < 2:
+ return False
+
+ for i in range(2, int(math.sqrt(number)) + 1):
+ if number % i == 0:
+ return False
+
+ # It's a prime
+ return True
+
+
+def get_bril_nums(l):
+ '''Get all primes of length l'''
+
+ primes = []
+ for i in range(10**(l-1), 10**l):
+ if is_prime(i):
+ primes.append(i)
+
+ # Calculate all brilliant numbers
+ bril_nums = []
+ for i, v1 in enumerate(primes):
+ for v2 in primes[i:]:
+ bril_nums.append(v1*v2)
+
+ # Return the sorted list
+ bril_nums.sort()
+ return bril_nums
+
+
+def main():
+ '''Find the first twenty brilliant numbers'''
+ l = 1
+ bril_nums = []
+
+ # Keep increasing the length of primes until we have at least twenty
+ # solutions
+ while len(bril_nums) < 20:
+ bril_nums.extend(get_bril_nums(l))
+ l += 1
+
+ # Print the first 20 numbers
+ print(*bril_nums[0:20], sep=', ')
+
+
+if __name__ == '__main__':
+ main()