プロが教えるわが家の防犯対策術!

javaで整数nを入力し、それが素数かどうか判断するプログラムを拡張して、入力した数を素因数分解するプログラムを作成したしたいのですが、まったくわかりません。誰か教えてください。お願いします!!

A 回答 (2件)

「java 素数かどうか判断 素因数分解」でググったら色々出てきますよ。



http://detail.chiebukuro.yahoo.co.jp/qa/question …
http://detail.chiebukuro.yahoo.co.jp/qa/question …
http://oshiete.goo.ne.jp/qa/4584777.html
http://blog.goo.ne.jp/dc1394/e/bf6c6cb2068ae0b6c …

それとも考え方?
素数は解りますよね?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に載ってますので。

以上、ご参考まで。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます!
頑張ってみます。

お礼日時:2010/07/09 14:43

整数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+"は素数です。");
}
}
}

このコードからの拡張でお願いします。

補足日時:2010/07/09 14:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!