top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
素因数分解をおこなうトイアプリを作成しました。
子どもが素数に興味を持ったので、ちょびっと素因数分解をおこなうトイアプリを作成しました。 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…