Programming/Project Euler118 [C/C++] 프로젝트 오일러 #97 Large Non-Mersenne Prime(수학) 메르센 소수(Mersenne Prime)는 아주 특별한 형태의 소수입니다. 소수란 1과 자기 자신 외에 다른 약수가 없는 숫자를 말하는데, 메르센 소수는 그 중에서도 다음과 같은 형태를 가진 숫자들입니다:Mp=2p−1여기서 p 는 소수(Prime number)여야 합니다. 간단히 말해, 2의 거듭제곱에서 1을 뺀 숫자들 중에서 소수인 것을 메르센 소수라고 부릅니다. p=2라면, 메르센 소수는 M2=22−1=4−1=3 가 되어, 3은 가장 작은 메르센 소수가 됩니다. p=3 라면, 메르센 소수는 M3=23−1=8−1=7 가 됩니다.그러나 모든 2p−1이 소수가 되는 것은.. 2024. 11. 19. [C/C++] 프로젝트 오일러 #96 Su Doku(백트래킹) Project Euler의 96번 문제는 스도쿠 퍼즐을 해결하는 알고리즘 설계를 다루고 있습니다. 스도쿠는 9x9 격자로 이루어진 퍼즐 게임으로, 각 행, 열, 그리고 3x3의 작은 박스에 1부터 9까지의 숫자를 중복 없이 채워 넣는 것이 목표입니다. 이 문제는 단순히 하나의 스도쿠를 푸는 것이 아니라, 여러 개의 스도쿠 퍼즐을 입력받아 각각을 해결한 뒤, 각 퍼즐의 해답에서 첫 번째 세 숫자를 추출하여 합산하는 과제를 제시하고 있습니다.프로그래머의 관점에서 이 문제를 접하면, 가장 먼저 고려해야 할 점은 스도쿠 퍼즐을 효율적으로 해결할 수 있는 알고리즘입니다. 일반적으로 사람이 스도쿠를 풀 때는 규칙을 기반으로 논리적 접근을 활용합니다. 특정 위치에 들어갈 수 있는 숫자의 후보를 좁혀가는 과정을 반복하.. 2024. 11. 18. [C/C++] 프로젝트 오일러 #95 Amicable Chains(수학) 프로젝트 오일러 #95: Amicable Chains (우애 체인)이 문제는 숫자들 사이의 관계를 탐구하는 것으로, 특정 수의 약수의 합을 계산하여 순환하는 우애 체인(amicable chain)을 찾는 것입니다. 다음과 같은 과정을 따릅니다:1. 정의• 어떤 수 n의 약수의 합을 s(n)이라고 정의합니다. 여기서 s(n)은 n 자신을 제외한 모든 양의 약수의 합입니다.예를 들자면 s(12)=1+2+3+4+6=16으로 s(12) 값이 16이 됩니다.• 두 수 a와 b가 우애수(amicable numbers)라면 s(a)=b이고 s(b)=a이며 a≠b입니다.예를 들.. 2024. 11. 17. [C/C++] 프로젝트 오일러 #94 Almost Equilateral Triangles(수학) Project Euler #94: Almost Equilateral Triangles 문제는 “거의 정삼각형” 성질을 가진 삼각형 중에서 주어진 조건을 만족하는 삼각형의 합을 구하는 문제입니다. 정삼각형은 세 변의 길이가 모두 같은 삼각형입니다. 그러나 이 문제에서는 거의 정삼각형(Almost Equilateral Triangles)을 다룹니다. 거의 정삼각형은 다음 조건을 만족하는 삼각형입니다:1. 두 변의 길이가 같고, 나머지 한 변의 길이가 이와 1 차이가 난다. 예: a,a,a+1 또는 a,a,a−1 형태2. 삼각형의 세 변이 정수이고, 넓이도 정수여야 한다.삼각형의 넓이 계산 (헤론의 공식)삼각형의 넓이를 구할 때는 헤론의 공식을 사용합니다.세 변이 \(a, b, .. 2024. 11. 16. [C/C++] 프로젝트 오일러 #93 Arithmetic Expressions(백트래킹) 프로젝트 오일러 문제 #93, Arithmetic Expressions는 네 개의 숫자를 이용해 가능한 모든 정수 값을 만들고, 그 중 가장 긴 연속된 정수 집합을 찾는 문제입니다. 이 문제의 목표는 네 개의 서로 다른 숫자를 선택한 후, 사칙연산과 괄호를 자유롭게 조합하여 만들 수 있는 모든 가능한 정수를 계산하는 것입니다. 예를 들어, 주어진 숫자가 1, 2, 3, 4라면, 이 네 숫자를 사용해 다양한 수식을 만들어내고, 그 수식을 통해 결과로 얻을 수 있는 모든 정수를 구하게 됩니다.문제의 규칙은 다음과 같습니다.1. 네 개의 숫자는 모두 서로 달라야 합니다.2. 각 숫자는 한 번만 사용할 수 있습니다.3. 사칙연산(+, -, *, /)과 괄호를 사용하여 가능한 많은 정수를 만들어냅니다.4. 음수나.. 2024. 11. 14. [C/C++] 프로젝트 오일러 #91 Right Triangles with Integer Coordinates(전체 탐색) Project Euler #91 문제는 좌표 평면에서 원점을 포함하여 세 점을 선택해 직각삼각형을 구성하는 경우의 수를 찾는 문제입니다. 문제의 주요 요구 사항은 다음과 같습니다:1. 평면의 오른쪽 위에 있는 정사각형 영역(예를 들어, 크기  내의 점)을 대상으로 합니다.2. 직각 삼각형의 세 꼭짓점 중 하나는 항상 원점(0,0)에 고정됩니다.3. 나머지 두 점을 선택해 직각이 될 수 있는 경우를 찾습니다.4. 삼각형의 직각은 두 변이 x축 또는 y축과 평행한 경우로 한정됩니다.이 문제는 가능한 모든 점 조합을 조사하여 직각 조건을 만족하는 경우를 계산해야 하므로, 효율적인 알고리즘과 중복을 방지하는 로직이 필요합니다. 제가 작성한 소스는 다음과 같습니다.//-----------------------.. 2024. 11. 11. 이전 1 2 3 4 5 6 7 ··· 20 다음 728x90