top / index / prev / next / target / source

2006-11-06 diary: 素因数分解をおこなうトイアプリ

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

素因数分解をおこなうトイアプリ

素因数分解をおこなうトイアプリを作成しました。

素因数分解をおこなうトイアプリ

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

この日記について