[C언어 코드업 문제풀이] CodeUp 1274 : 소수 판별

코드업 1274번 소수 판별 문제 풀이 해답입니다.

 

1. 문제 설명

 

소수란, 약수가 1과 자기 자신 두 개 뿐인 수를 말한다.

어떤 수가 입력되면 그 수가 소수인지 판단하시오.

예)

2     ====> 소수 (왜냐하면 약수가 1 과 자기자신 2밖에 없기때문..)

3     ====> 소수 (왜냐하면 약수가 1 과 자기자신 3밖에 없기때문..)

4     ====> 소수가 아님 (왜냐하면 약수가 1 , 2 , 4 이기 때문..)

10     ====> 소수가 아님 (왜냐하면 약수가 1 , 2 , 5 , 10 이기 때문..)

11     ====> 소수 (왜냐하면 약수가 1 과 자기자신 11밖에 없기때문..)

 

2. 입력

 

2이상의 자연수가 입력으로 주어진다.

 

3. 출력

 

입력으로 주어진 수가 소수이면 "prime"을 출력, 소수가 아니면 "not prime"을 출력한다.

 

4. 입력 예시

 

7

 

5. 출력 예시

 

prime

 

6. 문제 풀이

1 2 3 9 12

 

#include<stdio.h>
 
int main(){
    
    int N; //k존,h밥
    scanf("%d",&N);
    int index = 0;
    for(int i = 1; i<= N; i++){
        if( (N%i) == 0){index++;}
        
    }
    if(index == 2){printf("prime");}
    else{printf("not prime");}
    return 0;
}
 

 

많은 풀이 방법이 있지만 허접하게 가장 기본적인 방법으로 풀어 봤습니다.

 

소수는 1과 자기자신만을 약수로 두고있는 수입니다.

따라서 약수를 카운트해서 약수가 2일 경우 소수가 됩니다.

 

if( (N%i) == 0){index++;}

i로  N을 나누어졌을때 index를 증가시킵니다.

 

if(index == 2){printf("prime");}

index(약수의 개수)가 2일경우 소수로 판단합니다.

 

감사합니다.

댓글()