Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- stream
- 알기쉬운 알고리즘
- C programming
- insertion sort
- Algorithm
- 이스케이프 문자
- buffer
- 혼자 공부하는 C언어
- s
- R
- list 컬렉션
- datastructure
- C 언어 코딩 도장
- 윤성우 열혈자료구조
- Selection Sorting
- 윤성우의 열혈 자료구조
- 메모리구조
- JSON
- 이것이 자바다
- Graph
- coding test
- Stack
- Serialization
Archives
- Today
- Total
Engineering Note
15. 소수의 개수 본문
it 취업을 위한 알고리즘 문제풀이
문제
코드1
코드2
문제해결방법
- isPirme함수 (주어진 숫자x가 소수인지 확인하는 함수)
- flag 변수로 prime 변수사용
- 2~x-1이 까지 숫자로 나누었을 때 나누어 떨어지는 수가 존재한다면 소수가 아님
- 나누어 떨어지는 숫자가 없었을 경우 소수임
- 그런데 이때 103같은 소수의 경우 102이까지 모두 체크해야 소수임을 확인할 수 있는데 시간복잡도 측면에서 좋은 코드가 아님
- 약수의 규칙을 이용해서 코드 2 처럼 수정
- 64의 경우 (1,2,4,8,16,32,64) 1과 64, 2와 32, 4와 16이 짝을 이루고 8이 중간에 있다 8 다음의 숫자들에 대해서는 나누어 봐야 약수는 이미 구해졌다는 뜻이다.
- 여기서 8은 64의 제곱근이다. 제곱근을 구하는 함수를 이용해 i가 x의 제곱근까지만 나누어떨어지는 숫자가 있는지 확인하면 되지만 제곱근 함수를 사용하지 않는다면 i를 제곱한 숫자(i*i)가 x를 넘어간다면 더 이상 나누어 떨어지는 숫자를 확인하지 않아도 된다는 뜻이다.
- 2부터 n까지의 숫자에 대해 반복문으로 소수인 경우 cnt 변수를 1씩 증가
'Problem Solving > Olympiad in Informatics' 카테고리의 다른 글
17. 선생님 퀴즈 (0) | 2021.02.02 |
---|---|
16. Anagram(구글 인터뷰문제) (0) | 2021.02.01 |
14. 뒤집은 소수 (0) | 2021.01.26 |
13. 가장 많이 사용된 자릿수 (0) | 2021.01.24 |
57. 재귀함수 이진수 출력 (0) | 2021.01.22 |
Comments