2016-05-17 4 views
-3

100を入力すると、次のようになります。(2,2,5,5) しかし、動作しません。整数の因数分解 - コードが機能しない

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

public class kgV { 

    public static void main(String[] args) throws NumberFormatException, IOException { 

     ArrayList<Integer> factors = new ArrayList<Integer>(); 
     boolean isPrime = true; 

     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     int number = Integer.parseInt(in.readLine()); 


     for(int i=2; number>0; i++){ 
      for(int j=2; j<i; j++){ 
       if(i % j == 0){ 
       isPrime = false; 
      } 
     } 

     if(isPrime && number % i == 0){ 
      number = number/i; 
      factors.add(i); 
     } 

     isPrime = true; 

     } 
     System.out.println(factors.toString()); 
    } 
} 

これは

100 = 2x2x5x5 
27= 3x3x3 
30= 2x3x5 
+0

あなたは、少なくとも、英語名でコーディングする必要があります。 –

+1

私はこれを「非常に低い品質」としています。 「間違っているのはなぜですか?」という間接的な質問以外は疑問がありません。フォーマットは悪く、最後の2行です。私はそれらにどのように反応するのか分かりません。この投稿を削除、それはここに属しません。 – Seth

+0

問題はなぜ動作していないのですか – Marco

答えて

0

はこれを試してみて動作するはず方法です。外国人にそれを示すとき

public class NewClass { 

    public static void main(String[] args) throws IOException { 

    ArrayList<Integer> faktoren = new ArrayList<Integer>();  

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    int zahl = Integer.parseInt(in.readLine()); 

    for (int i = 2; i <= zahl; i++) { 
     while (zahl % i == 0) { 
     faktoren.add(i); 
     zahl /= i; 
     } 
    } 
    System.out.println(faktoren.toString()); 
    }   
} 
0
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

public class Main { 

public static void main(String[] args) throws NumberFormatException, IOException { 

     ArrayList<Integer> faktoren = new ArrayList<Integer>(); 

     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     int zahl = Integer.parseInt(in.readLine()); 

     // While number is not 1 check for factors 
     while (zahl != 1) { 
      // Check each number till zahl for possible factor 
      for (int i = 2; i <= zahl; i++) { 
       if (zahl % i == 0) { 
        // update number and add factor 
        zahl = zahl/i; 
        faktoren.add(i); 
        break; 
       } 
      } 
     } 
     // Prime number will contain only itself in faktoren array 
     boolean prim = faktoren.size() == 1; 
     System.out.println(faktoren.toString()); 
    } 
} 
関連する問題