티스토리 뷰
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> #include <math.h> void main() { double input = 600851475143; int count = 0; for (int i = 2; i <= input; ++i) { for (int j = 1; j <= i; ++j) { if (i%j == 0) ++count; } if (count == 2) { if (fmod(input, (double)i) == 0) { printf("%d ", i); input /= i; } } count = 0; } } | cs |
소수 중에서도 정해진 수의 소인수인지 확인해야 하므로
1. 소수를 구하는 알고리즘과
2. 그것이 어떤 수의 소인수인지 확인하는 알고리즘을
같이 써야 한다.
나머지를 구하기 위한 % 연산자는 정수끼리의 연산에서만 사용 가능하였다.
찾아보니 fmod()라는, 실수 간 연산에서 나머지를 구하는 함수가 존재하여 사용하였다.
fmod()를 사용하기 위해서는 math.h 헤더파일을 포함시켜야 한다.
'Algorithm > Project Euler' 카테고리의 다른 글
프로젝트 오일러 2번 (0) | 2017.05.19 |
---|---|
프로젝트 오일러 20번 (0) | 2017.05.19 |
프로젝트 오일러 16번 (0) | 2017.05.18 |
프로젝트 오일러 14번 (0) | 2017.05.17 |
프로젝트 오일러 11번 (0) | 2017.05.15 |
댓글