본문 바로가기

Programming456

[C/C++] 프로젝트 오일러 #46 : 골드바흐의 다른 추측 이번문제는 골드바흐의 소수에 관련된 오래된 추측과 모양만 유사한 문제입니다. 골드바흐의 추측은 당시 많은 수학자들의 예상을 깨고, 아직까지 증명되지 않은 문제입니다.  (홀수 완전수와 비슷하게 증명이 쉽게 이루어질거라는 예상을 깨고서 아직까지 증명되지 않았습니다.) 문제의 난이도는 5%로 상당히 낮습니다.  풀이 자체가 어렵지 않습니다. Project Euler 문제 46번, Goldbach’s Other Conjecture는 다음과 같은 내용을 다룹니다.이 문제에서는 골드바흐의 다른 추측(Goldbach’s Other Conjecture)을 검증하는 과정에서 예외가 발생하는 가장 작은 홀수 합성수를 찾는 것이 목표입니다. 골드바흐의 다른 추측은 다음과 같습니다.“모든 홀수 합성수는 어떤 소수 하나와 두.. 2016. 5. 31.
[C/C++] 프로젝트 오일러 #45 삼각수, 오각수, 육각수 Project Euler 문제 45번은 특정한 수열들 간의 관계를 탐색하는 문제입니다.이 문제에서는 삼각수(Triangular number), 오각수(Pentagonal number), 육각수(Hexagonal number)의 개념을 다루고 있습니다. 삼각수는 자연수의 합으로 정의되며, 식으로는  \(T_n = \frac{n(n+1)}{2}\) 로 나타낼 수 있습니다. 오각수는 특정 패턴을 따라 증가하는 다각수 중 하나로,  \(P_n = \frac{n(3n-1)}{2}\) 의 형태를 가집니다. 육각수는 정육각형 패턴을 따라 증가하며, 식으로는  \(H_n = n(2n-1)\) 로 정의됩니다.문제에서는 이 세 가지 수열의 교집합을 찾는 것이 목표입니다. 이미 주어진 예시로  \(T_{285} = P_{1.. 2016. 5. 27.
[C/C++] 프로젝트 오일러 #44 오각수 이번 문제는 오각수라는 특이한 수를 만들어내어야 합니다. 오각수는 오각형으로 점을 찍어나갈 때, 점의 갯수입니다.  편의를 위해서 그림을 첨부하면 다음과 같습니다.  프로젝트 오일러 사이트의 문제는 다음과 같습니다.오각수라는 것을 설명하고 있고, 오각수들의 순열중에, 어느 두개의 오각수의 차와 합이 또다른 오각수들이 되는 것을 찾아야 합니다.  오각수를 나타내는 공식은 문제에서와 같이 다음과 같습니다. \[ P_n = n(3n-1)/2 \] 그리고 오각수는 단순증가이므로, 결국 문제에서 원하는 것은 다음을 만족하는 최소의 \(P_s\) 값을 찾는 것입니다. \[ P_s + P_t = P_u \]\[ P_t + P_u = P_v \] 그냥 단순한 방법으로 위 식을 만족하는 s, t 를 찾으면 됩니다.저는 .. 2016. 5. 26.
[C/C++] 프로젝트 오일러 #43 : 부분 문자열 나누어 떨어지기 Project Euler #43 - Sub-string Divisibility 문제는 특정한 성질을 만족하는 팬디지털(pandigital) 숫자를 찾고, 그들의 합을 구하는 문제입니다.  이번 문제도 간단한 문제입니다. (난이도 5%) 문제 설명 0부터 9까지의 숫자를 각각 한 번씩만 사용하여 만들 수 있는 10자리 숫자를 09 팬디지털 숫자라고 합니다. 예를 들어, 1406357289는 10자리 0~9 팬디지털 숫자입니다.이 문제에서는 단순히 팬디지털 숫자를 생성하는 것이 아니라, 특정한 부분 문자열(sub-string) 이 특정한 소수(prime number)로 나누어지는지를 검사해야 합니다. 구체적으로, 10자리 팬디지털 숫자에서 아래 조건을 만족하는 숫자를 찾아야 합니다. 조건 - 부분 문자열이 .. 2016. 5. 25.
[C/C++] 프로젝트 오일러 #42 : 삼각수 단어 이 문제는 알고리즘이 크게 필요하지는 않습니다.그래서인지 문제의 난이도는 5%입니다.  어떤 단어의 알파벳 값을 다음과 같이 정의할 수 있습니다. 각 알파벳은 A=1, B=2, C=3, …, Z=26의 값을 가지며, 단어의 알파벳 값은 각 문자에 해당하는 숫자를 더한 값입니다. 예를 들어, “SKY”라는 단어는 S=19, K=11, Y=25이므로, 알파벳 값은 19 + 11 + 25 = 55가 됩니다.한편, 삼각수(triangle number)는 다음과 같은 공식으로 계산할 수 있습니다.\[T_n = \frac{n(n+1)}{2}\] 여기서 n 은 자연수이며, 예를 들어 첫 몇 개의 삼각수는 1, 3, 6, 10, 15, 21, … 과 같이 됩니다.주어진 단어 리스트에서 단어의 알파벳 값이 삼각수와 같은.. 2016. 5. 24.
[C/C++] 프로젝트 오일러 #41 : 팬디지털 소수 이 문제의 난이도 5%입니다. 그렇게 어렵지 않은 문제이죠.문제를 살펴보면 다음과 같습니다.우리는 1부터 n까지 정확하게 한번씩만 사용한 n자리 숫자가 있다면, 이것을 팬디털(pandigital) 숫자라고 부릅니다. 예를 들어서 2143은 4자리 팬디지털 숫자이면서, 또한 소수입니다.가장 큰 n자리 팬디지털 소수는 얼마일까요?일단 팬디지털이라는 것을 알았으면, 우리는 간단하게 1~9까지 한번만 사용해서 이 숫자를 구하면 됩니다.팬디지털을 만들 수 있는 가장 큰 자릿수는 9자리입니다. 왜냐하면 그 이상부터는 두자리숫자가 될 수밖에 없기 때문에 팬디지털 정의에 어긋납니다.프로그램은 9자릿수부터 만들 수 있는 모든 팬디지털수를 만듭니다. (사실 이것을 1부터 n까지 배열하는 순열수입니다.) 순열 수 중에 사실.. 2015. 10. 27.
728x90