Skip to content

Instantly share code, notes, and snippets.

@Konard
Last active February 20, 2022 17:23
Show Gist options
  • Save Konard/54182f05ec54b0621fd539749c44c8db to your computer and use it in GitHub Desktop.
Save Konard/54182f05ec54b0621fd539749c44c8db to your computer and use it in GitHub Desktop.
Prime numbers pattern in unary numbers represented as doublets.
is_prime_array = [False, True, True, True, False]
primes = [1, 2, 3, 5]
def is_prime(n):
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0:
return False
i += 2
while not is_prime(i):
i += 2
return True
def append_prime(n, is_prime):
if is_prime:
primes.append(n)
is_prime_array.append(is_prime)
def is_prime_memoized(n):
array_len = len(is_prime_array)
is_prime = True
if array_len > n:
return is_prime_array[n]
elif array_len == n:
i = 1
p = primes[i]
while i * i <= n:
if n % p == 0:
is_prime = False
break
i += 1
p = primes[i]
append_prime(n, is_prime)
else:
i = array_len
while i <= n:
is_prime = is_prime_memoized(i)
i += 1
return is_prime
# for i in range(1, 120):
# if is_prime(i):
# print(i)
# for i in range(1, 120):
# if is_prime_memoized(i):
# print(i)
print(is_prime(99999))
print(is_prime_memoized(99999))
print('done')
01 = (01: ...)
02 = (02: 01 01) prime
03 = (03: 02 01) prime
04 = (04: 02 02)
05 = (05: 04 01) prime
06 = (06: 04 02)
07 = (07: 04 03) prime
08 = (08: 04 04)
09 = (09: 08 01) !prime (divisible by 3) (9 = 3*3)
10 = (10: 08 02)
11 = (11: 08 03) prime
12 = (12: 08 04)
13 = (13: 08 05) prime
14 = (14: 08 06)
15 = (15: 08 07) !prime (divisible by 3)
16 = (16: 08 08)
17 = (17: 16 01) prime
18 = (18: 16 02)
19 = (19: 16 03) prime
20 = (20: 16 04)
21 = (21: 16 05) !prime (divisible by 3)
22 = (22: 16 06)
23 = (23: 16 07) prime
24 = (24: 16 08)
25 = (25: 16 09) !prime (divisible by 5) (25 = 5*5)
26 = (26: 16 10)
27 = (27: 16 11) !prime (divisible by 3)
28 = (28: 16 12)
29 = (29: 16 13) prime
30 = (30: 16 14)
31 = (31: 16 15) prime
32 = (32: 16 16)
33 = (33: 32 01) !prime (divisible by 3)
34 = (34: 32 02)
35 = (35: 32 03) !prime (divisible by 5)
36 = (36: 32 04)
37 = (37: 32 05) prime
38 = (38: 32 06)
39 = (39: 32 07) !prime (divisible by 3)
40 = (40: 32 08)
41 = (41: 32 09) prime
42 = (42: 32 10)
43 = (43: 32 11) prime
44 = (44: 32 12)
45 = (45: 32 13) !prime (divisible by 5)
46 = (46: 32 14)
47 = (47: 32 15) prime
48 = (48: 32 16)
49 = (49: 32 17) !prime (divisible by 7) (49 = 7*7)
50 = (50: 32 18)
51 = (51: 32 19) !prime (divisible by 3)
52 = (52: 32 20)
53 = (53: 32 21) prime
54 = (54: 32 22)
55 = (55: 32 23) !prime (divisible by 5)
56 = (56: 32 24)
57 = (57: 32 25) !prime (divisible by 3)
58 = (58: 32 26)
59 = (59: 32 27) prime
60 = (60: 32 28)
61 = (61: 32 29) prime
62 = (62: 32 30)
63 = (63: 32 31) !prime (divisible by 3)
64 = (64: 32 32)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment