DY N DY

실력키우기 소수와 합성수(JAVA) 본문

PARK/ALGORITHM

실력키우기 소수와 합성수(JAVA)

손세지 2016. 6. 3. 09:52

2811 : 소수와 합성수

제한시간: 1ms    메모리제한: 64MB
해결횟수: 358회    시도횟수: 997회   



소수(prime number)란 1보다 큰 자연수 중 1과 자기 자신 두 개만을 약수로 갖는 수를 말한다.
합성수(composite number)란 1보다 큰 자연수 중 소수가 아닌 수를 말하며 3개 이상의 약수를 갖는다.
1은 소수도 합성수도 아니다.
5개의 자연수를 입력받아 소수인지 합성수인지를 판단하는 프로그램을 작성하시오.

 

10억 이하의 자연수 5개가 공백으로 구분되어 주어진다.



입력된 순서대로 한 줄에 한 개씩 소수이면 "prime number", 합성수이면 "composite number", 소수도 합성수도 아니면 "number one"이라고 출력한다.


 [Copy]
3 10 1 55 127
 [Copy]
prime number
composite number
number one
composite number
prime number


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**************************************************************
    Problem: 2811
    User: a132034
    Language: Java
    Result: Success
    Time:175 ms
    Memory:9128 kb
****************************************************************/
 
 
import java.util.Scanner;
 
public class Main
{
    public static void main(String[] args) {
         
        Scanner sc = new Scanner(System.in);
         
        int []arr = new int[5];
        for(int i = 0 ; i < 5; ++i)
            arr[i] = sc.nextInt();
 
        for(int i = 0 ; i < 5; ++i)
            System.out.println(isPrime(arr[i]));
    }
     
    public static String isPrime(int num){
        if(num == 1)
            return "number one";
         
        for(int i = 2; i <= Math.sqrt(num); ++i)
        {
            if(num % i == 0) return "composite number";
        }
        return "prime number";
    }
}


최근 소수 관련 문제를 연속으로 풀었더니 어렵지 않았다. 

소수 구하는 공식에 대한 설명은 이전 알고리즘에 설명했기 때문에 생략.

'PARK > ALGORITHM' 카테고리의 다른 글

실력키우기 섞기수열(C++)  (0) 2016.06.28
실력키우기 문자열변환(JAVA)  (7) 2016.06.03
실력키우기 소수의개수(JAVA)  (0) 2016.06.02
실력키우기 소수(JAVA)  (0) 2016.06.01
알고리즘 로봇(JAVA)  (0) 2016.05.26