2016-10-17 8 views
-3

Оригинал: Итак, для моего введения в класс программирования мы должны найти простые коэффициенты диапазона чисел, которые пользователь вводит (т. Е. 59-65). Проблема с множеством решений здесь заключается в том, что они используют вещи, которые мы не обсуждали в классе, например массивы, продолжают и т. Д. Это довольно простой класс. Что касается требований, мы должны использовать метод/функцию primeFact, который мы вызываем в первом цикле for. Она поручила нам использовать время и цикл в методе, чтобы получить основные факторы, но каждый раз, когда я думаю, что у меня что-то есть, это не получается. Любая помощь действительно ценится, а мой код ниже. Мне действительно нужна помощь с частью метода с алгоритмом поиска факторов.Prime Factoring in Java - Intro Programming

Редактировать: Вот окончательное решение, в которое я повернулся. Он работает и даст все простые множители всех чисел в заданном диапазоне чисел.

import java.util.Scanner; 

public class PrimeFact { 

public static void main(String[] args) { 
    int start, stop; 

    //Get input 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter then two values with the lower value first"); 
    start = input.nextInt(); 
    stop = input.nextInt(); 
    input.close(); 

    //Displays for the start of the loop 
    System.out.println("Starting value (at least two digits): "+start); 
    System.out.println("Ending value (at least two digits): "+stop); 
    System.out.println("Prime factors for numbers between "+start+" and "+stop); 

    //Loop for the prime factors 
    for (int num = start; num <= stop; num++) { 
     primeFact(num); 
    } 
} 

// Method for Prime Factoring 
public static void primeFact(int num) { 
    int divisor = 2; 
    System.out.print(num+" = "); 
    while (num>1) { 
     if ((num%divisor) == 0) { 
      System.out.print(divisor+" x ");  
      num=num/divisor;    
     } else { 
      divisor++; 
     } 
    } 
    System.out.print("1"); 
    System.out.println(); 
    } 
} 
+3

Почему знак 'r'? Что значит «это не получается?» – ChiefTwoPencils

ответ

0

Вы метод довольно близко к решению. но ваш цикл while недействителен.

помните, что это должно быть так:

while(<boolean statement>){ 
    //code here 
} 

я ссылаться на переменном мы проверяем «простоту» по «Num»

вот как проверить факторы с временем циклом:

//remember, num is given to us in the parameters of primeFact(int num). 

boolean isPrime = true; //we are optimistic. 

//we start at 2 because everything is divisible by one 
int posFact = 2; //short for "possible factor" 

while(posFact < num){ //this will start at 2, and go to 1 less than num 
    if(num % posFact == 0){ // "%" gives us remainder 
     isPrime = false; // we now know it's not prime 
     System.out.println("The number " + posFact + " is a factor of " + num + "."); 
    } 
    posFact++; //increments posFact up by 1 
} 

if(isPrime){ //This will only be true if the number is prime 
    System.out.println("The number " + num + " is prime!"); 
} 

Мы можем сделать то же самое с для цикла:

//remember, num is given to us in the parameters. 

boolean isPrime = true; //we are optimistic. 

for(int posFact = 2; posFact < num; posFact++){ //posFact's initialization and incrementation was moved here. 
    if(num % posFact == 0){ // "%" gives us remainder 
     isPrime = false; // we now know it's not prime 
     System.out.println("The number " + posFact + " is a factor of " + num + "."); 
    } 
} 

if(isPrime){ //This will only be true if the number is prime 
    System.out.println("The number " + num + " is prime!"); 
} 
1
public static void primeFact(int num) { 
    System.out.print(num+" = "); 
    for(int i=2;i<num;i++) 
    { 
     if(num%i==0) 
     { 
      if(isPrime(i)) 
      { 
       System.out.println("Prime Factor for "+num+" is:"+i); 
      } 
     } 

    } 
    if(num==2) 
    System.out.println("Prime Factor for "+num+" is:"+num); 
} 
static boolean isPrime(int num){ 
    for(int i=2;i<num;i++) 
    { 
     if(num%i==0) 
     { 
      return false; 
     } 
    } 
    return true; 
    } 

//if u want use while replace the for loop like 
    public static void primeFact(int num) { 
    System.out.print(num+" = ");  

    int i=2; 
    while(i<num) 
    { 
     if(num%i==0) 
     { 
      if(isPrime(i)) 
      { 
       System.out.println("Prime Factor for "+num+" is:"+i); 
      } 
     } 
     i=i+1; 
    } 
    if(num==2) 
    System.out.println("Prime Factor for "+num+" is:"+num); 
} 
static boolean isPrime(int num){ 
    int i=2; 
    while(i<num) 
    { 
     if(num%i==0) 
     { 
      return false; 
     } 
    i=i+1; 
    } 
    return true; 
    } 
+0

Это будет работать в ваших условиях, я надеюсь – MohanaPriyan