본문 바로가기
2015 IT 웹 기반 개발자과정/JAVA

JAVA 소수 찾기 / 소인수분해하기

by 한여름밤의코딩 2015. 11. 2.
import java.util.Scanner;
 
public class AA {
	public static int [] num = new int[100];
	
	public static boolean factor(int r) //소수 출력
	{
		
		int range = (int)Math.sqrt(r);
					 		
		for(int i=2; i<=range; i++){
			if(r % i == 0){
				System.out.printf("%d*", i); //약수라면 출력
				if(is_prime(r/i)==true) System.out.print(r/i); //나눈 값이 소수라면 출력
				factor(r/i);
				return true;				
			}				
		}
		return false;
	}
	
	public static boolean is_prime(int n)  // 소수판별
    { 
        int i;  
        int range = (int)Math.sqrt(n);  // 검사할 범위  
 
       if(n == 2)                                 // n이 2
            return true;                          // 2는 소수
    
       if(n%2 == 0  || n == 1)                // n이 짝수 혹은 1
            return false;                         // n은 소수 아님
 
        for(i=3; i<=range; i+=2)          // i는 2부터 루트n 까지 홀수만 검사   
        {   
            if(n%i == 0)                     // n을 i로 나눈 나머지가 0   
                return false;                // n은 소수 아님   
        }   
 
        return true;                         // n은 소수   
    } 
 
	
	public static void main(String[] args) {
			
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수를 입력하세요");
		int input = sc.nextInt();
						
		if(factor(input)==false) System.out.println(input+"은 소수입니다");
		
		
	}
}