裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

分数の計算(和)

2015年03月24日 | ブログラミング

文字列 "a/b" の形式で表される 2 つの分数の和を,同じ形式で表示する
分母が 1 の場合は,分子だけを表示する

func = function(s1, s2) {
  euclid = function(m, n) { # ユークリッドの互除法
    while ((temp = n%%m) != 0) {
      n = m
      m = temp
    }
    return(m)
  }
  a = as.integer(unlist(strsplit(s1, "/")))
  b = as.integer(unlist(strsplit(s2, "/")))
  denominator = a[2] * b[2]
  numerator = a[1] * b[2] + b[1] * a[2]
  gcm = euclid(denominator, numerator)
  denominator = denominator / gcm
  numerator = numerator / gcm
  if (denominator == 1)
    cat(numerator)
  else
    cat(numerator, denominator, sep = "/")
  cat("\n")
}
func("5/6", "1/10") # 14/15
func("1/3", "2/3")  # 1
func("1/3", "2/7")  # 13/21
func("2/8", "3/5")  # 17/20
func("3/10", "1/6") # 7/15
func("3/4", "5/8")  # 11/8
func("2/5", "2/3")  # 16/15

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村