文字列 "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
最新の画像[もっと見る]
- 算額(その2135) 9時間前
- 算額(その2134) 16時間前
- 算額(その2133) 1日前
- 算額(その2132) 3日前
- 算額(その2131) 4日前
- 算額(その2130) 4日前
- 算額(その2129) 5日前
- 算額(その2128) 5日前
- 算額(その2127) 6日前
- 算額(その2126) 6日前
※コメント投稿者のブログIDはブログ作成者のみに通知されます