2016-10-17 5 views
-3

원본 : 그래서 프로그래밍 수업 소개를 위해 사용자가 입력 한 숫자 범위의 기본 요소 (예 : 59-65)를 찾아야합니다. 여기에서 많은 솔루션의 문제점은 배열과 같은 클래스에서 논의하지 않은 것들을 계속 사용한다는 것입니다. 꽤 기본 클래스입니다. 요구 사항에 관해서는 첫 번째 for 루프에서 호출하는 primeFact 메소드/함수를 사용해야합니다. 그녀는 우리에게 중요한 요소를 얻는 방법에 while과 for 루프를 사용하도록 지시했지만, 내가 뭔가를 가지고 있다고 생각할 때마다, 그것은 올바르게 나오지 않습니다. 어떤 도움이라도 대단히 감사 드리며 나의 코드는 아래에 있습니다. 나는 실제로 요소를 찾는 알고리즘을 가지고 메소드 부분에 대해서만 도움이 필요하다.자바의 프라임 인수 - 소개 프로그래밍

편집 : 여기 들어간 최종 해결책이 있습니다. 주어진 숫자 범위 내에서 모든 숫자의 모든 기본 요소를 제공하고 작동합니다.

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 루프는 유효하지 않습니다.

는 이렇게해야 기억에 "NUM"나는 변수를 참조합니다

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

우리가 "소수성"를 확인하는

여기에 while 루프와 요소를 확인하는 방법은 다음과 같습니다

//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!"); 
} 

우리는 for 루프와 동일한 일을 수행 할 수 있습니다

//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