2016-03-07 6 views
0

Мне нужно написать программу, которая находит факторы числа. Если это просто, мне просто нужно сказать, что это просто, иначе мне нужно показать факторы. Мне также нужно сделать так, если это одно или другое, оно отобразит определенное утверждение. Я могу выяснить разложение, но я не могу понять, как писать дисплей, если число является простым. Это должно быть сделано с использованием JOptionPane, и я очень смущен.Факторинг числа в Java с использованием петель

Текущий код:

{ 
    String intro = "Hello!\nThis program will ask you to enter a number and will then tell you whether or not it is prime.\n" 
      + "If the number is prime, it will be shown and you will be told it is prime.\n" 
      + "If the number is not prime, it willl be shown followed by it's prime decomposition.\n\n" 
      + "For example, for 41: The number 41 is prime\n" 
      + "For example, for 105: The number 105 will be shown, followed by 3 X 5 X 7"; 
    JOptionPane.showMessageDialog(null, intro, "Prime Decomposer, Introduction",1); 

    String numPrompt = JOptionPane.showInputDialog(null, "Please enter any positive integer.\n" 
        + "The number must be positive, and CANNOT be a decimal value such as 1.5\n\n" 
        + "For example, if you wanted to enter the number 12," 
        + " you would enter: 12", "Prime Decomposer, Integer Entry",1); 
    int userNum = Integer.parseInt(numPrompt); 
    int iteration = 0; 
    int factoredNum = userNum; 
    String decomposition = ""; 
    for(iteration = 2; iteration <= userNum; iteration++) 
     { 
      while(factoredNum % iteration == 0) 
      { 
       decomposition += iteration + " "; 
       factoredNum /= iteration; 
      } 

     } 
     JOptionPane.showMessageDialog(null, "The number "+userNum+" is not prime. Its decomposition is "+decomposition); 
} 
+0

* Я очень смущен. * - С чем вы смущены? – shmosel

+0

Как вы считаете, «декомпозиция» будет выглядеть, если бы число было простым и как вы могли проверить значение «декомпозиции»? – barrowc

+0

@shmosel, я смущен о том, как создать еще одну JOptionPane, которая скажет что-то вроде «Это число простое», если оно не может быть учтено вне себя и 1. –

ответ

0

Вид некрасиво, но я думаю, что это будет работать.

int isPrime = 0;  
for(iteration = 2; iteration <= userNum; iteration++) 
    { 
     while(factoredNum % iteration == 0) 
     { 
      if(iteration<userNum){ 
       isPrime++; 
      } 
      decomposition += iteration + " "; 
      factoredNum /= iteration; 
     } 

    } 
    if(isPrime==0){ 
     JOptionPane.showMessageDialog(null, "The number "+userNum+" is prime. Its decomposition is "+decomposition); 
    }else{ 
     JOptionPane.showMessageDialog(null, "The number "+userNum+" is not prime. Its decomposition is "+decomposition); 
    } 
+0

Единственное, что мы еще не рассмотрели booleans, и я не хочу рисковать использовать его перед лекцией. Есть ли другой способ, которым я могу настроить мои циклы while, где мне не нужно было бы использовать boolean? –

+0

Я имею в виду, что логическое значение является просто примитивным типом данных. Если вы используете JOptionPanes и 'int' и' String', я не думаю, что у вас будет проблема. Дайте мне несколько минут, и я вижу, могу ли я думать о другом. –

+0

Я отредактировал свой код, и я думаю, что он сработает. Дайте мне знать, что вы думаете. –