25、將真分數分解為分子為1之分數和。(大學甲組)
17 1
1 1 1
例:─ =─ + ─ + ─ + ──
21 2
4 17 1428
測試資料:
57 12345 37
(A) ─ (B) ─── (C) ─
58 12346 67
35 123
(D)── ──
48 456
|
範例一
|
範例二
|
輸入
|
17/21
|
57/58
|
輸出
|
17/21=1/2+1/4+1/17+1/1428
|
1/2+1/3+1/7+1/153+1/31059
|
17
|
|
714
|
357
|
84
|
1
|
1156
|
|
21
|
0.80952381
|
1428
|
1428
|
1428
|
1428
|
1428
|
0.80952381
|
1/2 1/4 1/17
1/1428 = 1156/1428 = 0.80952381
程式:
#coding=utf8
print("25、將真分數分解為分子為1之分數和。")
print("=====================================")
while True:
a=int(input("請輸入分子 a < 10000:"))
try:
a = int(a)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( a >= 0 and a < 10000):
break
#==================
while True:
b=int(input("請輸入分母 b < 10000 :"))
try:
b = int(b)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( b >= 0 and b < 10000):
break
#==================
n=0
while (n==0):
if (b%a != 0): # /*若分子不能整除分母*/ != 或 <> 不等於
c=int(b/a)+1 # /*则分解出一个分母为b/a+1的埃及分数*/
else:
c=int(b/a) #/*否则,输出化简后的真分数(埃及分数)*/
a=1
if (a==1) :
print("1 /", c ,end="")
n=1 # break
else:
print("1 /",c,"+",end="") # end="" 不換行
a=a*c-b #/*求出余数的分子*/
b=b*c #/*求出余数的分母*/
if (a==3): #/*若余数为3,输出最后两个埃及分数*/
print("a=3,b=",b,end="")
print("1 /",int(b/2),"+ 1 /",b,end="")
n=1 # break
print() # new line 換行
# end
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-25.py =================
25、將真分數分解為分子為1之分數和。
=====================================
請輸入分子 a < 10000:17
請輸入分母 b < 10000 :21
1 / 2 +1 / 4 +1 / 17 +1 / 1428
>>>
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-25.py =================
25、將真分數分解為分子為1之分數和。
=====================================
請輸入分子 a < 10000:57
請輸入分母 b < 10000 :58
1 / 2 +1 / 3 +1 / 7 +1 / 153 +1 / 31059
>>>
沒有留言:
張貼留言