-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmysystems.py
More file actions
58 lines (49 loc) · 1.25 KB
/
Copy pathmysystems.py
File metadata and controls
58 lines (49 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from myfactor import *
def to_digits(number, base=10):
digs = []
while number > 0:
digs.append(number % base)
number //= base
digs = digs[::-1]
return digs
def from_digits(digs, base=10):
number = 0
for dig in digs:
number *= base
number += dig
return number
def to_prime_counts(number):
if number == 1:
return [0]
pcounts = []
pfactors = prime_factors(number)
for p in prime_range(max(pfactors)+1):
pcounts.append( pfactors.count(p) )
pcounts.reverse()
return pcounts
def from_prime_counts(prime_counts):
pcounts = prime_counts.copy()[::-1]
print(pcounts)
number = 1
for i in range(len(pcounts)):
number *= prime_get(i) ** pcounts[i]
return number
def to_quacks(number):
if number == 0:
return 0
pcounts = to_prime_counts(number)
return [to_quacks(i) for i in pcounts]
def from_quacks(quacks):
if quacks == 0:
return 0
return from_prime_counts([from_quacks(quack) for quack in quacks])
#the mess:
def format_quacks(quacks):
if quacks == 0:
return ""
s = str(quacks)
s = s.replace('0', '')
s = s.replace(' ', '')
return s
def nice(x):
return format_quacks(to_quacks(x))