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 |
Tags
- Raspberry Pi
- #c언어
- 배수 더하기
- #Project Euler
- palindrome
- Radio
- API
- project euler
- 최소공배수
- 라즈베리파이
- mp3
- 프로젝트 오일러
- 피보나치
- lirc
- #프로젝트 오일러
- open weather map
- 대칭수
- PiFaceCAD
- #소수판별
- 소인수 구하기
- C언어
Archives
- Today
- Total
ㅇㅅㅇ
프로젝트 오일러(Project Euler) 7번문제 본문
Problem 7
소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다.
이 때 10,001번째의 소수를 구하세요.
풀이
개인적으로 이렇게 심플한 문제가 좋다. 소수 판별은 10001번째 까지만 구하면 되기 때문에, 그냥 숫자 하나씩 증가시키면서 나눠지는지 안나눠 지는지 테스트 하는 방식으로 진행하였다. 소수가 뭔지 모르는 사람은 없다고 생각한다.
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 | #include <stdio.h> int main() { int num = 3, cnt = 1, flag = 0; // 3부터 소수판별 시작 -> count인 cnt는 1로 시작 while (1) { for (int i = 2; i < num; i++) { if (num%i == 0) { flag = 1; // 만약 1과 자기 자신 사이에 나눠지는 break; // 수가 있으면 플래그를 1로 올림. } } if (flag == 0) cnt++; // 플래그가 0일때만 cnt 증가 flag = 0; if (cnt == 10001) // 10001번째 소수 출력 { printf("%d\n", num); break; } num++; } } | cs |
결과
막코딩이라 그런가 빠르지는 않았다.
'프로그래밍 > 프로젝트 오일러' 카테고리의 다른 글
프로젝트 오일러(Project Euler) 6번문제 (0) | 2017.06.27 |
---|---|
프로젝트 오일러(Project Euler) 5번문제 (0) | 2017.06.27 |
프로젝트 오일러(Project Euler) 4번문제 (0) | 2017.06.26 |
프로젝트 오일러(Project Euler) 3번문제 (0) | 2017.06.25 |
프로젝트 오일러(Project Euler) 2번문제 (0) | 2017.06.25 |
Comments