2016年9月8日 星期四

python 程式設計50題測試範例-25

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
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...