• 締切済み

javaで整数nを入力し、それが素数かどうか判断するプログラムを拡張し

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

  • Java
  • 回答数2
  • ありがとう数4

みんなの回答

  • mintia007
  • ベストアンサー率59% (16/27)
回答No.2

「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に載ってますので。 以上、ご参考まで。

okarei
質問者

お礼

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

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

整数nを入力し、それが素数かどうか判断するプログラム というのが既に存在しているのね。 それがどんなコードか分からないけど それを拡張しなくちゃいけないのだから それが分からないと何もアドバイスできないわよ。

okarei
質問者

補足

そうですよね。すいません! 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+"は素数です。"); } } } このコードからの拡張でお願いします。

関連するQ&A

  • n^2-20n+91が素数となる整数nの値・・・

    すごく、基本的な問題だと思うのですが、考え方に疑問があります。 n^2-20n+91が素数となる整数nの値を求める問題です。 参考書の解説には、題式を因数分解して=(n-7)(n-13)とし、 Pが素数のとき、素因数分解したとき1×Pにしかならないので、 n-7又はn-13のどちらかが1ということで、 n-7=±1またはn-13=±1とおいています。 自分が分からないので、「±」です。素因数分解したとき1×Pにしかならないので、 n-7=1またはn-13=1とおいてしまいました。 なぜ、±1とおけるのかが分かりません。要は-1がどのようにして条件になるのかが理解 できていません。 そういうわけでございます。考え方の質問です。

  • 素因数プログラムで、間違えて因数4で割らない

    練習問題 5-15  2以上の数値を入力し、素因数分解した結果を表示しなさい。    疑問ですが、素因数分解なので割る数字は、2.3.5.7.・・・の自分の数字しか割りきれない数字で  割ります。それでは、以下のプログラムはどこでそれを判断しているのでしょか?  4で割ろうとしないのは、どこのプログラムが司っているのでしょうか  もし!見えない取り組みがあれば宜しくお願いします。  以下プログラムです。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } }

  • 素因数分解プログラムで、5は5と表示するのは?

     練習問題 5-15  2以上の数値を入力し、素因数分解した結果を表示しなさい。 1) int n, x; 2) scanf("%d", &n ); 3) for( x = 2 ; n > 1 ; x++ ){ /*for解説コメントをお願いします。*/ 4) while( ( n % x ) == 0 ){ 5) printf( "%d ", x ); 6) n /= x; } }  以上のプログラムですが、100と入力すると→2 2 5 5と表示されます。  5と入力すると→5と表示されます。どこのプログラムで5は5しか割り切れないと  判断しているのでしょうか?  宜しくお願いします。

  • 1から入力された数までの素因数を数えるプログラム

    こんにちは 1から入力された数(N)までの素因数を数えるプログラムを 作成したいのですが、うまくいきません。 たとえば10と入力すると2と表示されてしまいます。 どこがおかしいのかわかりません。 どなたか教えてください。おねがいします。 N個の配列を用意し、1を入れていき、 素因数でない数の要素には0をいれて、 最終的に1が入っている配列の数を数えて1~Nまでの 素因数の数を数える方法を考えています。 Dim M As Integer Dim N As Integer Dim i As Integer Dim j As Integer Dim sum As Integer Dim L(1000) As Double N = Val(TextBox1) M = N i = 1 Do Until i > N L(i) = 1 i = i + 1 Loop i = 2 Do Until i > M j = i * 2 Do Until j > M L(j) = 0 j = j + 1 Loop i = i + 1 Loop sum = 0 For i = 2 To N If L(i) = 1 Then sum = sum + 1 End If Next i

  • 正整数Nの最大の素因数を求めるアルゴリズム

    正整数Nの最大の素因数を求めるアルゴリズムがわかりません。 ネットで検索して一応出てきたのですが、どうしても理解できません。 int i,no=N; //Nは正整数 for(i=2;i*i<=no;i++){ while(no%i==0) no/=i; } iまたはnoのどちらかに求めたい素因数が入っています。 なぜこれで求めることができるのでしょうか? noやiが非素数ということもあり得るのでは? ずっと考えましたがわかりません。 誰か教えてください。

  • P(n)をnの最大の素因数としたとき、

    整数論の問題です。 整数n≧1に対して, P(n)をnの最大の素因数とします。 このとき, P(n^2+1)→∞(n→∞)となる。 n≧240ならばP(n^2+1)≧17となる。 のですが、どうしてでしょか? さらに、P(n)≦7, P(n+1)≦7となる整数nを全て求めると、どうなるでしょうか?

  • 3n+1 の素数について

    3n+1 型 の素数の無限性を証明せよ。 次のような証明をしようとしたが、うまくいきません。アドバイスをお願いします。  3n+1型の素数は有限とし、最大な素数をpとする。  k=3(7×13×・・・×p)+1 とおく。  kは合成数であるから、素因数分解され、3n+2型の偶数個の積になる。(3n+1型の最大素数がpであることから)    *このあとの証明がうまくいきません。よろしくお願いします。

  • 整数 有理数

    本を読んでいて、字面だけではよくわからない事があったので教えて下さい。 整数の構造は素因数が示す 有理数の構造は整数の比が示す この二つの文章のイメージがわかないのですが、どういう事でしょうか。 教えて下さい。 よろしくお願いします。

  • java 素数判定

    入力した数字が整数か否かを判定するjavaプログラムを作っています。 以下の通りコンパイルして実行しました。これだと実行したときに どんな数字を数字を入力しても「31は素数です。 」となります。 入力した数字を判定させるにはどのようにしたらいいのでしょうか? class Sosuu { public static void main (String[] args) { int n = 31; boolean isPrime = true; for (int i = 2; i <= n - 1; i++) if (n % i == 0) { isPrime = false; break; } if (isPrime) System.out.println(n + " は素数です。"); else System.out.println(n + " は素数ではありません。"); } }

    • ベストアンサー
    • Java
  • 4n+1型の素数について

    4n+1型素数の無限性を示せ。 次のように考えた。行き詰まったのでアドバイスをお願いします。 4n+1の素数は有限で最大をpとする。 k=4(5×13×・・×p)+1 とおく。 kは合成数のとき、kは4n+3型の素数の偶数個の積に素因数分解できるから、  k=(4x+1)(4y+1) x,y自然数   =16xy+4x+4y+1  となる。  このあとの矛盾の導き方が見えないので、この流れの証明とすると このあとどうなるのか、よろしくお願いします。