- 締切済み
javaで整数nを入力し、それが素数かどうか判断するプログラムを拡張し
javaで整数nを入力し、それが素数かどうか判断するプログラムを拡張して、入力した数を素因数分解するプログラムを作成したしたいのですが、まったくわかりません。誰か教えてください。お願いします!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mintia007
- ベストアンサー率59% (16/27)
「java 素数かどうか判断 素因数分解」でググったら色々出てきますよ。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1339092658 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1425649789 http://okwave.jp/qa/q4584777.html http://blog.goo.ne.jp/dc1394/e/bf6c6cb2068ae0b6c5ef698dcc715a62 それとも考え方? 素数は解りますよね?1か自分以外の値でしか割れない(小数点はNG)数です。 なので、2から順番に割り切れるか判断していっていきます。余りが0なら 割り切れているので素数ではありません。それを判断したい数まで繰り返し そこまで割っても割り切れなかった場合、素数となります。 素因数分解は、一番小さい素数「2」から順次割っていきます。割り切れなかったら 次に大きい素数で割ります。割り切れたら今度はその商を元に割って生きます。 それを商が1になるまでか、素因数分解したい値になるまで繰り返します。 例えば、30を素因数分解してみます。 先ず2から割っていきます。30÷2=15で割り切れます。ので「2」が抽出できます。 次にまた2で割りますが、15は割り切れないので次の値である3で割ります。15÷3=5 です。更に3で割り5は割り切れないので4、4も割り切れないので5、5で割ると 5÷5=1で割り切れて商が1になったので終了。 よって、30を素因数分解すると「2×3×5」となります。 これをプログラムすれば良いしヒントは上記したURLに載ってますので。 以上、ご参考まで。
- askaaska
- ベストアンサー率35% (1455/4149)
整数nを入力し、それが素数かどうか判断するプログラム というのが既に存在しているのね。 それがどんなコードか分からないけど それを拡張しなくちゃいけないのだから それが分からないと何もアドバイスできないわよ。
補足
そうですよね。すいません! import java.io.*; class Prog8_6 { public static void main(String[] args) throws IOException { System.out.println("整数を入力してください。"); BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); String str= br.readLine(); int num = Integer.parseInt(str); for(int i=2; i<=num; i++){ if(i==num){ System.out.println(num+"は素数です。"); } else if(num%i==0){ System.out.println(num+"は素数ではありません。"); break; } } if(num==1){ System.out.println(num+"は素数です。"); } } } このコードからの拡張でお願いします。
お礼
丁寧にありがとうございます! 頑張ってみます。