Programming/Euler16 Euler 8 다음은 연속된 1000자리 숫자입니다 (읽기 좋게 50자리씩 잘라놓음). 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 .. 2020. 6. 30. Euler 7 소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다. 이때 10,001번째의 소수를 구하세요. 소수는 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다. 그냥 일반적으로 반복문을 돌려 1과 자기 자신 이외의 숫자가 떨어지는 경우를 확인하는 방법, 에라토스테네스의 채 알고리즘을 사용하는 방법 이 두 가지의 경우로 풀었다. 에라토스테네스의 채 1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 3. 자기 자신을 제외한 2의 배수를 모두 지운다. 4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 5. 자기 자.. 2020. 6. 18. Euler 6 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합). 12 + 22 + ... + 102 = 385 1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱). (1 + 2 + ... + 10)2 = 552 = 3025 따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main(){ int sum1,sum2; sum1 = sum2 =0; for(int i=1;i 1 2 3 4 5 6 7.. 2020. 6. 18. Euler 5 1 ~ 20까지의 최소 공배수를 구하면 된다. 유클리드 호제법을 이용하여 최대 공약수를 구한 뒤 최소 공배수를 하면 된다. 유클리드 알고리즘은 2개 의자 연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a> b) a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 최소 공배수는 a, b를 곱한 뒤 두 수의 최대 공약수로 나누면 구할 수 있다... 2020. 6. 16. 이전 1 2 3 4 다음