관리 메뉴

사적공간

소수 prime_number 식별_c 본문

KNOU_CS/이산수학

소수 prime_number 식별_c

2sac 2022. 7. 29. 12:11

출처: https://codevang.tistory.com/65

소수의 범위: 자연수 중에서 1 초과범위에서 1과 자기 자신만을 약수로 가지는 수 

위 블로거의 코드는 1을 출력하므로 아래 내가 작성한 코드에서 초기값을 2로 주었다.(int i =2) 

소수의 갯수를 세어야 하므로 (전체회전수 - 합성수status=1)을 놓고 출력하였다.  

 

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
#include <stdio.h>
#define SIZE 20 // 20이하의 소수를 구하기 위해 
 
void main()
{
    int countA= 0, countB=0// countA는 for문 회전수, countB는 합성수의 개수, 초기값은 0 
    for (int i = 2; i <= SIZE; i++// 2부터 SIZE까지 1씩 증가시켜서 아래 작업을 반복한다. 
    {
        int status = 0// status는 소수인지 아닌지 판별하는 수 0이면 소수,1 이면 합성수 
        countA++// SIZE만큼 전체 회전수 세기 
        for (int j = 2; j < i; j++// j를 2부터 i보다 적은 수까지 1씩 증가시키며 아래반복(2부터 하는 이유는 소수는 1과 자기자신으로만 나눌 수 있으므로 )
            if (i % j == 0/*i를 j로 나누어 나머지가 0이면 i는 합성수, 나머지가 0이 아닐때까지는 소수*/
            {
                status = 1// status가 1이라는 건 i는 합성수 
                countB++//합성수
                break//회전 끝내고 빠져 나가기
            }
                
        if(status == 0//i를 소수로 보고 아래에서 출력 
        printf("%d ", i); 
    }
 
            printf("\n 소수의 개수는 %d 개", countA-countB); // 전체회전수 - 합성수
}
 
 
cs

 

 

소스 참고: https://codevang.tistory.com/65

count 사용법 참고: https://blog.naver.com/tipsware/221371970080

'KNOU_CS > 이산수학' 카테고리의 다른 글

그래프1 차수에 관해 생각해보기  (0) 2022.08.10
그래프1 이분그래프  (0) 2022.08.09
부울대수  (0) 2022.08.09
이산수학 학습주안점  (0) 2022.08.02
부분집합 문제  (0) 2022.07.29