2016-05-17 7 views
-3

Wenn ich 100 eintippe sollte es wie folgt aussehen: (2,2,5,5) Aber es funktioniert nicht.Integer Factorization - Code funktioniert nicht

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()); 
    } 
} 

Dies ist, wie sollte es diese

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

Sie sollten mit Englisch Namen codieren, zumindest wenn es um Ausländer zeigt. –

+1

Ich markiere dies als "sehr geringe Qualität". Es gibt keine andere Frage als die indirekte Frage "Warum funktioniert das nicht?", Die Formatierung ist schlecht und die letzten beiden Zeilen .. Ich weiß nicht, wie ich darauf reagieren soll. Entferne diesen Beitrag, er gehört nicht hierher. – Seth

+0

Die Frage ist, warum das nicht funktioniert – Marco

Antwort

0

ausprobieren.

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()); 
    } 
}