いがぴょん画像(小) 2003/06

2006/11/06 日記: 素因数分解をおこなうトイアプリ

[いがぴょんの日記v2,diary,igapyon] 素因数分解をおこなうトイアプリを作成しました。

広告: イマドキのIDE事情: Eclipseベースの統合翻訳環境「Benten」を使ってみよう 09/27
たげぞうさんの手による Benten 紹介記事!

インディックスページへ戻る
素因数分解をおこなうトイアプリ

子どもが素数に興味を持ったので、ちょびっと素因数分解をおこなうトイアプリを作成しました。

PrimeNumber.java
/**
 * 素因数分解をおこないます。
 * 
 * @author IGA Tosiki
 */
public class PrimeNumber {
    public static void main(String[] args) {
        new PrimeNumber().process();
    }

    /**
     * 素因数分解をおこない、標準出力に表示します。
     */
    private void process() {
        for (int number = 2; number < 1001; number++) {
            final StringBuffer buf = new StringBuffer();
            if (searchPrime(number, buf)) {
                System.out.println(number + " : 素数");
            } else {
                System.out.println(number + " = " + buf.toString());
            }
        }
    }

    /**
     * 素数を探していきます。このメソッドは再帰的に呼び出されます。
     * 
     * @param argTarget
     *            処理対象となる数値。
     * @param argBuf
     *            素因数を表示用に加工したもの。
     * @return 素数であればtrue。
     */
    private boolean searchPrime(final int argTarget, final StringBuffer argBuf) {
        for (int index = 2; index < argTarget; index++) {
            final int syou = argTarget / index;
            if (argTarget == syou * index) {
                // 素数ではない。
                argBuf.append(index + " x ");
                searchPrime(syou, argBuf);
                return false;
            }
        }

        // 素数である。
        argBuf.append(argTarget);
        return true;
    }
}
実行結果
2 : 素数
3 : 素数
4 = 2 x 2
5 : 素数
6 = 2 x 3
7 : 素数
8 = 2 x 2 x 2
9 = 3 x 3
10 = 2 x 5
11 : 素数
12 = 2 x 2 x 3
13 : 素数
14 = 2 x 7
15 = 3 x 5
16 = 2 x 2 x 2 x 2
17 : 素数
18 = 2 x 3 x 3
19 : 素数
20 = 2 x 2 x 5
…

いがぴょんについて
Last modified: $Date: 2010/09/27 20:42:49 $