//SoinsuuBunkai.java //安澤出海(泉獺) //素因数分解プログラム。整数を入力すると素因数分解してくれる。 //今回の変更点はゼロやマイナスに対応した。 import java.io.*;//入力コマンドを使用する際に必要。 public class SoinsuuBunkai{ public static void main(String[] args){ int a,b; a=InputNumber();//数値入力メソッドへ System.out.print(a+"="); if(a<0){//マイナスへの対応 System.out.print("-");//マイナスを追加。 a=Math.abs(a);//絶対値に変換 } if(a<=1){//入力値が-1,0,1の場合。 System.out.print(a);//素因数をそのまま出力 } else{//さもなくば b=CheckNumber(a);//最小の素因数を割り出す。先頭の処理。 System.out.print(b);//素因数を出力 a=a/b;//最小の素因数で割る。 while(a!=1){ b=CheckNumber(a);//最小の素因数を割り出す。 System.out.print("×"+b);//素因数を出力 a=a/b;//最小の素因数で割る。 } } System.out.println();//改行 System.out.println("素因数分解が終了しました。");//結果報告 } private static int CheckNumber(int a){//最小の素因数を割り出すメソッド int b=0;//仮に数値を代入しておかないとコンパイルを通らない。 //数値の代入コマンドはfor文・if文の中にあり、 //ここを通過しない可能性があると、 //機械(コンパイラー)が判断するからだ。 for(int i=2;;i++){ if(a%i==0){//余りがゼロなら b=i;//iを返り値にはできない。for文の終了と共にiも消えるから。 break;//for文を抜ける。 } } return b;//最小の素因数をメインメソッドに返す。 } private static int InputNumber(){//数値入力メソッド。 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int a=0;//22行目を参照されたし。 System.out.println("素因数分解をします。"); for(;;){//正しく入力されていなければ何度でもやり直す System.out.print("整数を入力してください。>"); try{ a=Integer.parseInt(br.readLine() );//入力&文字列を数値に変換 break; }catch(Exception e){//文字、少数点付きの数値などなら System.out.println("正しく入力してください。");//文字などを入力するとここへ来る。 } } return a;//入力された数値を返す。 } }