分解素因数(例:90=2*3*3*5)

1475 ワード

分解素因数:例えば90=2*3*3*5、コードは以下の通り:
package com.flyingh.demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo {

	public static void main(String[] args) throws NumberFormatException,
			IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println(" :");
		int n = Integer.parseInt(br.readLine());
		System.out.println(n + "=" + getOut(n));
	}

	private static StringBuilder sb = new StringBuilder();

	private static String getOut(int n) {
		if (!isPrime(n)) {
			for (int i = 2; i < n; i++) {
				if (isPrime(i) && n % i == 0) {
					sb.append(i).append("*");
					return getOut(n / i);
				}
			}
		} else {
			sb.append(n);
		}
		return sb.toString();
	}

	private static boolean isPrime(int n) {
		// TODO Auto-generated method stub
		if (n == 1) {
			throw new IllegalArgumentException(" 1");
		}
		if (n == 2 || n == 3) {
			return true;
		}
		for (int j = 2; j <= Math.sqrt(n); j++) {
			if (n % j == 0) {
				return false;
			}
		}
		return true;
	}

}

108を入力すると、次のように実行されます.
108=2*2*3*3*3