瞬秒爆加速
发表于 2018-3-11 13:27:05
def gcd(x,y):
while y:
x,y = y,x%y
return x
def add(a,b,c,d):
if b==d:
print("%d/%d" % ((a+c),b))
else:
z = gcd((a*d + c*b),b*d)
print("%d/%d" % ((a*d + c*b)//z,b*d//z))
大头目
发表于 2018-4-4 10:50:11
#学习
def Dicisor(a,b):
#最大公约数
dicisor_list =
return max(dicisor_list)
def my_add(a,b,c,d):
molecular = a*d +c*b
denominator =b*d
result = molecular/denominator
if result == int(result):
print(int(result))
else:
dicisor = Dicisor(molecular,denominator)
molecular_new = int(molecular/dicisor)
denominator_new = int(denominator/dicisor)
print("%s/%s"%(molecular_new,denominator_new))
my_add(1,1,3,4)
小王溜溜
发表于 2018-4-4 22:57:39
666
kwm
发表于 2018-4-5 16:22:52
123
tsembrace
发表于 2018-4-11 22:42:49
'''
编写一个简单的分数加法和减法函数,实现分数与分数,分数与整数的加减法。
如3/5 - 1/5 = 2/5 1/2 - 1/3 = 1/6 1/2 + 1/2 = 11- 1/3 = 2/3
函数的用法
add(a, b, c, d):a, b为第一个分数的分子与分母,c, d 为第二个分数的分子与分母
减法类似。
'''
def foo(n,m):
for i in range(2,min(n,m)+1):
if n%i==0 and m%i==0:
while n%i==0 and m%i==0:
n=n//i
m=m//i
return str(n)+'/'+str(m)
def add(a,b,c,d):
stri='%d/%d+%d/%d=' %(a,b,c,d)
n=a*d+c*b
m=b*d
if n%m==0:
return stri+str(n//m)
else:
return stri+foo(n,m)
def sub(a,b,c,d):
stri='%d/%d-%d/%d=' %(a,b,c,d)
n=a*d-c*b
m=b*d
if n%m==0:
return n//m
else:
strx=foo(abs(n),m)
if n<0:
return stri+'-'+strx
else:
return stri+strx
print(sub(1,2,2,6))
print(add(1,2,2,6))
小庆子
发表于 2018-5-15 09:24:43
def add(a,b,c,d):
print('%s/%s + %s/%s = '%(a,b,c,d),end='')
return (a/b)+(c/d)
萧丹夜
发表于 2018-5-24 15:46:52
本帖最后由 萧丹夜 于 2018-5-24 16:02 编辑
def add(a,b,c,d):
y1 = a * d + b * c
y2 = b * d
return simp(y1,y2)
def sub(a,b,c,d):
y1 = a * d - b * c
y2 = b * d
return simp(y1,y2)
def simp(y1,y2):
i = 2
while i <= y2:
if y1 % i == 0 and y2 % i == 0:
y1,y2 = y1 // i,y2 // i
i = 1
i += 1
return y1,y2
def jug(x):
if ' ' not in x:
return int(x),1
else:
return map(int,x.split())
x1 = input('请输入第一个数分子和分母:')
x2 = input('请输入第二个数分子和分母:')
a,b = jug(x1)
c,d = jug(x2)
k = input('请输入你想要做的运算(+/-):')
if k == '+':
y1,y2 = add(a,b,c,d)
elif k == '-':
y1,y2 = sub(a,b,c,d)
else:
print('输入有误!')
if y1 % y2 != 0:
if b == 1:
print('%d %c %d/%d = %d/%d ' %(a,k,c,d,y1,y2))
elif d == 1:
print('%d/%d %c %d = %d/%d ' %(a,b,k,c,y1,y2))
else:
print('%d/%d %c %d/%d = %d/%d ' %(a,b,k,c,d,y1,y2))
else:
if b == 1:
print('%d %c %d/%d = %d ' %(a,k,c,d,y1//y2))
elif d == 1:
print('%d/%d %c %d = %d ' %(a,b,k,c,y1//y2))
else:
print('%d/%d %c %d/%d = %d ' %(a,b,k,c,d,y1//y2))
jrro452
发表于 2018-5-30 17:26:00
#求最大公约数:
def gcd(a, b):
if b == 0:return a
return gcd(b, a % b)
#最小公倍数
def lcm(a,b):
return a*b//gcd(a,b)
a,b,c,d =input('请输入4个数,空格隔开:').split()
e = input('请输入‘+’或‘-’:')
def caculating(a,b,c,d,e):
lcmNum = lcm(int(b),int(d))
S = a+'/'+b+e+c+'/'+d+'='
if e =='-':
x =int(int(a)*lcmNum/int(b)-int(c)*lcmNum/int(d))
else:
x =int(int(a)*lcmNum/int(b)+int(c)*lcmNum/int(d))
y=gcd(lcmNum,x)
x=int(x/y)
lcmNum = int(lcmNum/y)
return S+str(x)+'/'+str(lcmNum)
print(caculating(a,b,c,d,e))
天下独我意
发表于 2018-6-14 19:31:20
{:10_275:}
可乐必须加冰
发表于 2018-8-2 21:03:15
def add(a, b, c, d):
if b == d:
if a + c == b:
print("1")
else:
print((a + c), "/", b)
else:
if a * d + b * c == b * d:
print("1")
else:
print((a * d + b * c), "/", b * d)
小木子c
发表于 2018-8-3 21:37:00
from fractions import gcd
def add(a,b,c,d):
#m、n表示加数和被加数的最简形式,下面的减法同理
m = a//b if a % b == 0 else str(a//gcd(a,b)) + '/' + str(b//gcd(a,b))
n = c//d if c % d == 0 else str(c//gcd(c,d)) + '/' + str(d//gcd(c,d))
k = a*d + b*c
fm = b*d
if k % fm == 0:
print(m,'+',n,'= %d' % (k//fm))
else:
result = str(k//gcd(k,fm)) + '/' + str(fm//gcd(k,fm))
print(m,'+',n,'= %s' % result)
def sub(a,b,c,d):
m = a//b if a % b == 0 else str(a//gcd(a,b)) + '/' + str(b//gcd(a,b))
n = c//d if c % d == 0 else str(c//gcd(c,d)) + '/' + str(d//gcd(c,d))
k = a*d - b*c
fm = b*d
if k % fm == 0:
print(m,'-',n,'= %d' % (k//fm))
else:
result = str(k//gcd(k,fm)) + '/' + str(fm//gcd(k,fm))
print(m,'-',n,'= %s' % result)
测试结果
>>> add(8,2,1,4)
4 + 1/4 = 17/4
>>> add(6,10,2,7)
3/5 + 2/7 = 31/35
>>> add(3,3,4,6)
1 + 2/3 = 5/3
>>> sub(8,2,1,4)
4 - 1/4 = 15/4
>>> sub(1,4,1,5)
1/4 - 1/5 = 1/20
>>> sub(1,4,5,4)
1/4 - 5/4 = -1
uilUVUBWP
发表于 2018-8-18 08:43:42
我做的也是不符合规定的{:9_240:}
import fractions
def add(a, b, c, d):
#a, b为第一个分数的分子与分母
#c, d 为第二个分数的分子与分母
x = fractions.Fraction(a, b)
y = fractions.Fraction(c, d)
print(x + y)
def subtraction(a, b, c, d):
# a, b为第一个分数的分子与分母
# c, d 为第二个分数的分子与分母
x = fractions.Fraction(a, b)
y = fractions.Fraction(c, d)
print(x - y)
z = add(1, 5, 3, 5)
print(z)
q = subtraction(3, 5, 1, 5)
print(q)
lyslyslys
发表于 2018-9-23 09:37:26
感谢
double-lee
发表于 2018-12-9 16:18:58
def add(a,b,c,d):
str1 = str(a)+'/'+str(b)+' + '+str(c)+'/'+str(d)+' = '
fz = a*d + c*b
fm = b*d
if fz == 0:
return str1+'0'
elif fz == fm:
return str1+'1'
elif fz > fm:
if fz % fm == 0:
return str1+str(int(fz/fm))
else:
n = fz % fm
m = int(fz // fm)
for i in range(n,0,-1):
if fm % i == 0 and n % i == 0:
return str1+str(m)+'('+str(int(n/i))+'/'+str(int(fm/i))+')'
else:
for i in range(fz,0,-1):
if fm % i == 0 and fz % i == 0:
return str1+str(int(fz/i))+'/'+str(int(fm/i))
def sub(a,b,c,d):
str1 = str(a)+'/'+str(b)+' - '+str(c)+'/'+str(d)+' = '
fz = a*d - c*b
fm = b*d
if fz == 0:
return str1+'0'
elif fz == fm:
return str1+'1'
elif fz > fm:
if fz % fm == 0:
return str1+str(int(fz/fm))
else:
n = fz % fm
m = int(fz // fm)
for i in range(n,0,-1):
if fm % i == 0 and n % i == 0:
return str1+str(m)+'('+str(int(n/i))+'/'+str(int(fm/i))+')'
else:
for i in range(fz,0,-1):
if fm % i == 0 and fz % i == 0:
return str1+str(int(fz/i))+'/'+str(int(fm/i))
1/2 + 1/2 = 1
6/2 + 9/3 = 6
6/2 + 8/3 = 5(2/3)
1/2 + 1/3 = 5/6
1/2 - 1/3 = 1/6
1/2 - 3/6 = 0
4/2 - 2/3 = 1(1/3)
9/5 - 4/5 = 1
sunyuanency
发表于 2019-1-3 14:20:26
持之以恒
咕咕鸡鸽鸽
发表于 2019-1-5 10:40:36
看看
北城以北灬
发表于 2019-3-15 14:39:57
def simplify(zi, mu):
x = 2
while x <= mu:
if zi % x == 0 and mu % x == 0:
zi = zi / x
mu = mu / x
return simplify(zi, mu)
else:
x += 1
if mu == 1:
print(zi)
else:
print(zi, "/", mu)
def add(a, b, c, d):
zi = a * d + b * c
mu = b * d
simplify(zi, mu)
def sub(a, b, c, d):
zi = a * d - b * c
mu = b * d
simplify(zi, mu)
add(1, 3, 1, 2)
5 / 6
Process finished with exit code 0
捞鬼
发表于 2019-4-8 21:59:53
捞
永恒的蓝色梦想
发表于 2019-8-20 12:17:07
本帖最后由 永恒的蓝色梦想 于 2019-8-20 12:18 编辑
from math import gcd
def add(a,b,c,d):a=a*d+c*b;b=b*d;k=gcd(a,b);return f'{a//k}/{b//k}'
def sub(a,b,c,d):return add(a,b,-c,d)
永恒的蓝色梦想
发表于 2019-8-20 12:20:44
zhhmms 发表于 2017-4-17 08:59
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
老哥上来就抄的么?