【2013年地方試験問題】有理数



有理数

  • 有理数は、2つの整数の比率として表すことができる数です。

  • 通常の状況では、おおよその小数を使用します。ただし、エラーが許可されない場合があり、有理数を表すために2つの整数を使用する必要があります以分数的形式

  • このとき、「有理数クラス」を作成することができ、次のコードは最初にこの目標を達成します。簡単にするために、加算と乗算の演算のみを提供します。空欄に記入してください〜

// 加法
public Rational add(Rational x){
    
    
    return __________________________; // 填空部分
}

トップに戻る


ワンステップ分析

演算子/:除算演算子。演算の結果は切り捨てられます。
演算子%:モジュロ演算、
 (1)演算子の場合左が右よりも小さい結果は左側に等しくなります;
 (2)演算子が左が右よりも大きい結果は算術の剰余と同じです。

①全体のプロセス

  • 最主要的步骤就是求取公约数,实现最后结果的化简,这里采用了递归取模的方式进行
    ここに画像の説明を挿入
    トップに戻る

②追加()

ここに画像の説明を挿入
ここに画像の説明を挿入
トップに戻る


第二に、完全なコード

public class Test03_有理数 {
    
    
    public static void main(String[] args) {
    
    
        Rational a = new Rational(1,2);
        Rational b = new Rational(1,4);
        Rational c = a.add(b);
        System.out.println(a + "+" + b + "=" + c );
    }
    static class Rational {
    
    
        private long ra; // 分子
        private long rb; // 分母

        // 求最大公约数
        private long gcb(long a,long b){
    
    
            if (b==0){
    
    
                return a;
            }
            return gcb(b,a % b);
        }

        public Rational(long a,long b){
    
    
            ra = a;
            rb = b;
            long k = gcb(ra,rb);
            if (k>1){
    
    
                ra/=k; // ra = ra / k;
                rb/=k;
            }
        }
        // 加法
        public Rational add(Rational x){
    
    
            return new Rational(ra*x.rb+x.ra*rb,rb*x.rb);
        }
        // 乘法
        public Rational mul(Rational x){
    
    
            return new Rational(ra* x.ra,rb*x.rb);
        }

        public String toString(){
    
    
            if (rb==1){
    
    
                return  ""+ra;
            }
            return ra+"/"+rb;
        }
    }
}

ここに画像の説明を挿入

トップに戻る


おすすめ

転載: blog.csdn.net/qq_45797116/article/details/113760271