티스토리 뷰
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <stdio.h> //배열의 크기를 정해주는 매크로입니다 //이크기를 조정하면 찾고자하는 소수의 개수를 정할수 있습니다 #define SIZE 1000 int main() { //음수가 될경우는 없다고 생각되서 //int 대신 unsigned int를 사용해줬습니다. //소수를 저장할 배열 1000개 까지 저장가능합니다. unsigned int arrPrime[SIZE] = {0}; //소수의 갯수를 기억할 변수를 만들어줍니다. unsigned int iPrimeCount = 0; //검사를 시작당할 타겟 1부터 검사를 시작합니다 unsigned int iTarget = 1; //나머지가 0 일경우 카운트할 숫자 unsigned int iCount = 0; //카운트가 2 이상인지 확인하기위해서 상수변수 2를 만들어 줬습니다. const unsigned int iCheck = 2; //소수의 갯수가 천개를 넘을경우 검사를 종료합니다 while (iPrimeCount < SIZE) { //for 문에서 1부터 자기자신의 숫자까지 나눠서 //나머지가 0 일 경우를 카운트 한다 for (unsigned int i = 1; i <= iTarget; ++i) { //타겟의 나머지가 0 일경우 카운트를 올려줍니다 if (iTarget % i == 0) ++iCount; //iCount 가 iCheck 보다 클 경우 소수가 아니므로 //검사를 탈출합니다 if (iCount > iCheck) { break; } } //검사가 끝난후 //iCouont 가 iCheck과 같을 경우 소수이므로 저장합니다 if (iCount == iCheck) { arrPrime[iPrimeCount] = iTarget; ++iPrimeCount; } //iTarget의 숫자를 2 증가 시켜줍니다 ++iTarget; //iCount 를 0 으로 초기화 시켜줍니다 iCount = 0; } //소수를 출력해줍니다 for (unsigned int i = 0; i < SIZE; ++i) { printf("%u. Prime Number %u\n", i + 1, arrPrime[i]); } //종료 0을 리턴해줍니다. return 0; } | cs |
소수를 검사할때 짝수는 검사할 필요가없다.
iTarget의 증가값을 2씩 시켜주고
2와 3은 검사없이 초기 소수값으로 배열에 할당해주고
5부터 검사값을 시작해주면
오버헤드를 줄여줄수있다
'C > Console' 카테고리의 다른 글
1부터 N까지의 곱을 구하는 수 (0) | 2018.11.12 |
---|---|
학생관리 기록부 (0) | 2018.11.11 |
10개의 원소를 입력받아 정렬한뒤 출력 (0) | 2018.11.10 |
소인수분해 프로그램 (0) | 2018.11.10 |
간단한 4칙연산 입출력 (0) | 2018.11.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JS
- CSS
- #C
- .editorconfig
- HTML
- 오류
- stdarg.h
- fyling fly
- wxWidgets
- dropdown list
- responsive slider
- 도메인 가격비교
- CSS 슬라이더
- gettext
- Visual Studio 2017
- scanf()
- slider
- 1000 자리 계산기
- C++
- xgettext
- css slider
- C11
- _Generic()
- SCSS @for
- #비주얼스튜디오
- Generic()
- flying bee
- scss slider
- 도매인 가격비교
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함