有理数

有理数

中級

説明

有理数は、2つの整数aとbの商として定義されます。aとbはそれぞれ分子と分母と呼ばれ、b != 0です。

有理数r = a/bの絶対値|r|は、|a|/|b|と等しくなります。

2つの有理数r₁ = a₁/b₁とr₂ = a₂/b₂の和は、r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂)です。

2つの有理数r₁ = a₁/b₁とr₂ = a₂/b₂の差は、r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂)です。

2つの有理数r₁ = a₁/b₁とr₂ = a₂/b₂の積(乗算)は、r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂)です。

有理数r₁ = a₁/b₁を別の有理数r₂ = a₂/b₂で割ると、a₂が0でない場合、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乗根です。

以下の演算を実装してください。

  • 2つの有理数の加算、減算、乗算、除算、
  • 絶対値、与えられた有理数の整数乗、与えられた有理数の実数(浮動小数点数)乗、実数の有理数乗。

有理数の実装では、常に約分して最小の形にしてください。たとえば、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が、クラスの演算子をオーバーライドする方法と、ImplicitおよびExplicitのキャストの仕組みを理解するのに大いに役立つでしょう。

出典

Wikipediaリンクは新しいウィンドウまたはタブで開きます
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Delphi Pascal Exercism

有理数を始める準備はできましたか?

Exercismに登録すれば、76個の演習、そして本物の人間によるメンタリングとともに、Delphi Pascalを学んでマスターできます。すべて無料です。