有理數

有理數

中等

說明

有理數的定義是兩個整數a與b的商,分別稱為分子與分母,其中b != 0。

有理數r = a/b的絕對值|r|等於|a|/|b|。

兩個有理數r₁ = a₁/b₁與r₂ = a₂/b₂的和是r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂)。

兩個有理數r₁ = a₁/b₁與r₂ = a₂/b₂的差是r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂)。

兩個有理數r₁ = a₁/b₁與r₂ = a₂/b₂的乘積(乘法)是r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂)。

將有理數r₁ = a₁/b₁除以另一個有理數r₂ = a₂/b₂,若a₂不為零,結果是r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁)。

有理數r = a/b的非負整數n次方是r^n = (a^n)/(b^n)。

有理數r = a/b的負整數n次方是r^n = (b^m)/(a^m),其中m = |n|。

有理數r = a/b的實數(浮點數)x次方是商(a^x)/(b^x),也就是實數。

實數x的有理數r = a/b次方是x^(a/b) = root(x^a, b),其中root(p, q)是p的q次方根。

請實作以下運算:

  • 兩個有理數的加、減、乘、除,
  • 絕對值、給定有理數的整數次方、給定有理數的實數(浮點數)次方,以及實數的有理數次方。

你實作的有理數應該一律約分成最簡形式。例如,4/4應該約分成1/1,30/60應該約分成1/2,12/8應該約分成3/2,以此類推。要約分有理數r = a/b,就將a與b同除以a與b的最大公因數(gcd)。例如gcd(12, 8) = 4,所以r = 12/8可以約分成(12/4)/(8/4) = 3/2。

假設你使用的程式語言沒有內建有理數的實作。

軌道專屬說明

  • 這個練習會介紹運算子多載。關於這個主題,Embarcadero docwiki 會對你很有幫助,讓你了解如何覆寫類別運算子,以及隱含轉型和明確轉型。

出處

Wikipedia連結會在新視窗或分頁中開啟
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Delphi Pascal Exercism

準備好開始 有理數 了嗎?

註冊 Exercism,透過 76 個練習 和真人引導來學習並精通 Delphi Pascal,全部免費。