タグ: Java

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[メモ][Java][JavaScript] ユークリッドの互除法

よく使うので、ユークリッドの互除法で二つの整数の最大公約数を求める関数をメモ。

/** Java */
int gcd(int x, int y) {
    int g = Math.max(Math.abs(x), Math.abs(y));
    int l = Math.min(Math.abs(x), Math.abs(y));
    while (l != 0) l = g % (g = l);
    return g;
}
/** JavaScript */
function gcd(x, y) {
    var g = Math.max(Math.abs(x), Math.abs(y));
    var l = Math.min(Math.abs(x), Math.abs(y));
    while (l != 0) l = g % (g = l);
    return g;
}

再帰は使わない。再帰を使っていなければ、関数化しないでインラインで使うこともできて便利。大小関係がはっきりしている正整数が二つある場合、ユークリッドの互除法は本質的にはwhile (l != 0) l = g % (g = l);だけで表現できるんだね。

まずJavaで書いて、それをほぼそのままJavaScriptに移植したから、JavaScript側のコードは引数のチェックをしていない。必要な場合は整数かどうかのチェックをしておいたほうがいいと思う。

続きを読む

スポンサーサイト

[Java] こういうときどうすればいいの?

例えば、数値を分数のまま四則演算する有理数クラスが↓のようになっていたとします。

public class Rational {

    private int numerator = 0;
    private int denominator = 1;

    public Rational(int numerator, int denominator) { ... }

    public Rational add(Rational x) { ... }
    public Rational subtract(Rational x) { ... }
    public Rational multiply(Rational x) { ... }
    public Rational divide(Rational x) { ... }

}

当然、このクラスを使う側では↓のようなコードを書くわけですね。

Rational add(Rational x, Rational y) {
    return x.add(y);
}

続きを読む

[Java] javax.swingに挑戦中

[13:59:24] LiosKの発言: XMLエディタ作りたい><

ということで、swing使ってJavaでがんばってます。Javaは初めてだから全然わからないけど。

とりあえずソースを晒してみる。kerriaというパッケージ名は意味のない開発コード。

続きを読む

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。