python化简分数
分数化简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
59
60
61
62
63
64
65def primes(x):
import datetime
start = datetime.datetime.now()
count = 1
lis = []
# 判断是否是2的倍数
if x % 2 == 0:
while True:
lis.append(2)
x /= 2
if x % 2 != 0:
break
r = 10**100 # 范围
for i in range(3, r, 2):
if i > 10 and i % 10 == 5:
continue
for j in range(3, int(i**0.5)+1, 2):
if i % j == 0:
break
else:
if x < i:
break
if x % i == 0:
while True:
lis.append(i)
x /= i
if x % i != 0:
break
#print(i)
count += 1
delta = (datetime.datetime.now()-start).total_seconds()
#print(start)
#print(delta)
#print(count)
return lis
a = None
b = None
n = 0
ans = None
while True:
try:
n += 1
a,b = map(int,input("please enter 2 ints:").split(" "))
except ValueError:
ans = "输入错误!我"*n+"再"+"给你一次机会"+"!"*n
print(ans.strip())
else:
break
if b == 0:
print("it's not exist!")
else:
a_l = primes(abs(a))
b_l = primes(abs(b))
for i in a_l:
for j in b_l:
if i == j:
a_l.remove(i)
b_l.remove(j)
a /= i
b /= j
if a*b>0:
ans = str(abs(int(a))) + "/" + str(abs(int(b)))
if a*b<0:
ans = "-" + str(abs(int(a))) + "/" + str(abs(int(b)))
print(ans.strip())