본문 바로가기
반응형

프로젝트 오일러3

[C++]프로젝트 오일러 1번 문제&풀이 (1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?) 문제 1번 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 접근방법 1. 1부터 차례로 3 또는 5로 나눠지면, 그 값을 result에 저장한다. 2. 전부 더하면 끝! #include using namespace std; int main() { int result = 0; for (int i = 1; i < 1000; i++) { if (i % 3 == 0 || i % 5 == 0) { result += i; // cout 2020. 11. 17.
[프로젝트 오일러] 4번 문제 & 풀이 (세자리 수를 곱해 만들 수 있는 가장 큰 대칭수) Problem 4 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 처음 아이디어 세 자리 수끼리의 곱의 범위는 (10000, 999999)로 5자리 또는 6자리이다. 대칭수 중 가장 큰 숫자를 묻고 있으므로, 6자리일 확률이 높다.(물론 아닐 수도 있다.) 따라서 큰 수부터 먼저 곱하고 작은 수는 나중에 곱한다. 그 다음, 숫자를 문자열로 변환하여 앞 3자리 숫자를 거꾸로 했을 때, 뒤 3자리 숫자와 같도록 조건문을 작성한다. 6자리 수에서 대칭수가 없을 경우를 대비하여 5자리의 경우의 조.. 2020. 5. 18.
[프로젝트 오일러] 3번 문제 & 풀이 (가장 큰 소인수 구하기) Problem 3 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. 내 아이디어 2부터 차례로 나누기 시작 나누어진 숫자가 나오면, 그 숫자로 한번 더 나눌 수 있도록 조건문의 처음으로 돌아가도록 설정 -> while & if 함수 사용 이와 같은 방식으로 나누는 숫자를 1씩 증가시키며 나눈다. 나누는 숫자가 나누는 숫자보다 더이상 작지 않으면 조건문 종료 (즉, 자기 자신을 나눌 때 종료) 마지막 나누는 숫자가 정답 num = 600851475143 a = 2 while a < num: if num % a == 0: num .. 2020. 5. 18.
반응형