[Project Euler] Problem 1 ~ 7번 알고리즘 풀이

2021. 2. 24. 00:17·Algorithms 💻
반응형

1. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?

s = 0
for i in range(1000):
    if i%3==0 or i%5==0:
        s = s + i
    else:
        pass
    
print(s)

2. 4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 ?

n1 = 0
n2 = 1
n3 = n1+n2
result = 0

while n3<=4000000:
  n3 = n1+n2
  # print(n3)
  n1 = n2
  n2 = n3

  if n3 % 2==0:
    result += n3

print('result_sum : ', result)

3. 600851475143의 소인수 중에서 가장 큰 수

a = 600851475143 
i = 2 
num = []
while (i<=a):
    if a%i==0:  
        num.append(i)  # 소인수 모음 
        a = a//i   # 이게 열쇠이다!
    i = i+1
print(max(num))

 

5.  1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수 (최소공배수)

for i in range(20,1000000000,20):    # 20씩 뛰면서 진행
  for a in range(1,20):
    if i%a != 0 :   # 나머지가 0이 아니면 멈추고 다음수로, 0이면 a 바꿔가면서 계속 진행
      break
    if a >= 19:
      print (i) 

6.  1부터 100까지 "제곱의 합"과 "합의 제곱"의 차는?

num = 1
a = 0  # 합의 제곱
b = 0  # 제곱의 합
while (num<=100):
  a += num
  b+= num**2
  num += 1    # 합의제곱
print('제곱의 합과 합의 제곱의 차 : ', a**2 - b)

 


7. 10001번째의 소수 구하기

num = 1   
i = 1
# 우선 True로 설정
while (num<=10002):
    i +=1 
    result = True  # True, False 이용
    for j in range(2, i):
      if i % j ==0:
        result = False
        break
        
    if result == True:
      num+=1
      if num == 10002:
        print('10001번째 소수 : ', i)   # 51초정도 걸림
cf) 에리토스테네스의 체 : 소수를 구하는 알고리즘

- 찾고자 하는 자연수를 배열로 나열하여 그 중에 소수의 배수들을 전부 지워나가면 남는 수가 소수가 됨 
- 시간복잡도를 매우 줄일 수 있음

코드 적용!

n = 104743
a = [False, False] + [True] * (n-1)   # False 두번, True가 n-1번 등장
소수 = []

for i in range(2, n+1):
  if a[i] == True:
    소수.append(i)  # 우선 소수로 추가
    
    for j in range(2*i, n+1, i):   # 소수의 배수를 지워간다 
      a[j] = False

print(소수)
print(len(소수))

 

반응형
저작자표시

'Algorithms 💻' 카테고리의 다른 글

자주 쓰이는 기본적인 정규표현식(Regex) 정리  (0) 2021.04.19
[알고리즘] - 선형배열(리스트 내 해당 원소의 인덱스 반환)  (0) 2020.12.30
[알고리즘] - 선형배열 (정렬된 리스트에 원소 삽입하기)  (0) 2020.12.30
'Algorithms 💻' 카테고리의 다른 글
  • 자주 쓰이는 기본적인 정규표현식(Regex) 정리
  • [알고리즘] - 선형배열(리스트 내 해당 원소의 인덱스 반환)
  • [알고리즘] - 선형배열 (정렬된 리스트에 원소 삽입하기)
당니이
당니이
씩씩하게 공부하기 📚💻
  • 당니이
    다은이의 컴퓨터 공부
    당니이
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Achieved 👩🏻 (14)
        • 생각들 (2)
        • TIL (6)
        • Trial and Error (1)
        • Inspiration ✨ (0)
        • 미국 박사 준비 🎓 (1)
      • Computer Vision💖 (39)
        • Basic (9)
        • Video (5)
        • Continual Learning (7)
        • Generative model (2)
        • Domain (DA & DG) (5)
        • Multimodal (8)
        • Multitask Learning (1)
        • Segmentation (1)
        • Colorization (1)
      • RL 🤖 (1)
      • Autonomous Driving 🚙 (11)
        • Geometry (4)
        • LiDAR 3D Detection (1)
        • Trajectory prediction (2)
        • Lane Detection (1)
        • HDmap (3)
      • Linux (15)
      • PyTorch👩🏻‍💻 (10)
      • Linear Algebra (2)
      • Python (5)
      • NLP (10)
        • Article 📑 (1)
      • Algorithms 💻 (22)
        • Basic (8)
        • BAEKJOON (8)
        • Programmers (2)
      • ML (1)
        • 통계적 머신러닝(20-2) (1)
      • SQL (3)
      • 기초금융 💵 (1)
  • 블로그 메뉴

    • 홈
    • About me
  • 링크

    • 나의 소박한 github
    • Naver 블로그
  • 공지사항

  • 인기 글

  • 태그

    LLM
    CV
    백트래킹
    pytorch
    Incremental Learning
    CL
    Linux
    domain adaptation
    코딩테스트
    dfs
    알고리즘
    NLP
    리눅스
    자료구조
    Python
    til
    백준
    continual learning
    conda
    domain generalization
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당니이
[Project Euler] Problem 1 ~ 7번 알고리즘 풀이
상단으로

티스토리툴바