일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로젝트 오일러
- 배수 더하기
- 피보나치
- API
- 대칭수
- 최소공배수
- 소인수 구하기
- Radio
- Raspberry Pi
- PiFaceCAD
- #프로젝트 오일러
- open weather map
- lirc
- mp3
- #소수판별
- project euler
- C언어
- #Project Euler
- 라즈베리파이
- palindrome
- #c언어
- Today
- Total
목록프로젝트 오일러 (6)
ㅇㅅㅇ
Problem 6 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합).12 + 22 + ... + 102 = 3851부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱).(1 + 2 + ... + 10)2 = 552 = 3025따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 풀이 쉬어가는 문제인 것 같다. 따로 풀이할 내용이 없다. 그냥 합의 제곱과 제곱의 합의 차를 구하면된다. 1234567891011121314#include int main(){ int sum1 = 0, sum2 = 0;..
Problem 5 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다.그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 풀이 사실 이문제는 계산기로 풀어서 부랴부랴 코드를 작성하였다. 그러다보니 좀 길어진듯 하다. 문제를 해결하는 법은 그닥 어렵지 않다. 1~10사이의 숫자들의 최소 공배수를 구하면되는데, 나는 소인수 분해를 이용해서 구해주었다. 아래 표는 1에서 10까지 가면서 최소공배수를 구해가는 과정이다. 소인수최소 공배수 1 1 1(제외) 2 2 2 3 3 2 x 3 4 2^2 2^2 x 3 5 5 2^2 x 3 x 5 6 2x3 2^2 x 3 x 5 7 7 2^2 x 3 x 5 x 7 8 2^3 2^3 x 3 x 5 x 7 9 3^22..
Problem 4 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 풀이 이제 문제가 조금씩 난이도가 증가하는 느낌이 든다. 프로그래밍 적으로 대칭수를 판별하는 것이 이번 문제의 핵심인 듯 하다. 방법에는 여러가지가 있을 수 있다. 그중에서 숫자를 나누기연산을 통해 12345를 54321로 뒤집어주는 방법과 12345를 문자열로 만드는 방법이 많이 사용된다. 나는 두번째 방법과 비슷하게 int형 배열을 만들어서 문제를 해결하였다. check_palindrome 이라는 함수를 만들어서 대칭수를..
Problem 3 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.600851475143의 소인수 중에서 가장 큰 수를 구하세요. 풀이 보통 프로그래밍을 배우는 과정에서 "소수를 판별하는 법" 같은건 한번씩 거치는 과정이라 거기에 얽매이면 안되는 문제중 하나이다. 나도 처음에는 별 생각없이 막 숫자 하나씩 증가시키면서 이게 소순지 아닌지 판단하는 코드를 작성했는데 돌리자마자 이건 아니라는걸 체감하고 바로 다시 작성했다(시간이 너무 오래 걸린다). 다시 문제를 살펴보면, 우리가 해야 할 건 소인수분해이다. 중학굔지 고등학굔지에서 배운 소인수 분해를 생각해보자 "15를 소인수분해 해라!" 라고하..
Problem 2 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까? 풀이 피보나치 수열을 프로그래밍 언어로 구현할 때 크게 두가지가 있는데, while문이나 for문을 사용하는 방법이 있고 재귀함수를 사용하여 구현하는 방법이 있다. 반복문을 사용해서 바로바로 더해가는 것이 재귀함수를 사용하는 것보다 빠르지만, 갑자기 재귀함수가 써보고 싶어서 재귀함수로 구현하였다. 아직까진 머리를 쓰는 것보다는 손 스트레칭하는 듯한 난이도... 123456789101112131415161718192021222324int fi..
problem 1 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다.1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 풀이 첫번째 문제라 그런지 쉬웠다. 코드에 크게 설명할 부분도 없을 정도. 그냥 1부터 1000까지 증가시켜가며, 3과 5의 %(Modular)연산을 통해서 3과 5의 배수를 더해가며 답을 구했다. 12345678void main() { int sum = 0; for (int i = 3; i