최대 공약수 구하기 (1) 프로그램 예제2 : 최대 공약수 구하기 문제 해결 방법 구상 (아는 지식 정리) GCD1 알고리즘

Slides:



Advertisements
Similar presentations
법의 이념과 철학의 이해 법의 이념은 무엇일까 ? 정의 : 각자에게 각자의 몫을 주는 것 - 평등의 의미가 내포되어 있음 법적 안정성 : 법의 규정이 명확하고 잦은 변경 이 없어야 함 개인의 자유와 권리를 공공복지와 조화롭게 추구 – 사회질서와 안전유지 + 사회정의.
Advertisements

내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여
이탈리아 피자스파게티올리브등.
VISUAL BASIC 양 계 탁.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
2D 게임프로그래밍 프로젝트 2차 발표 유제원.
고교평준화의 득과 실 김영주 이지영 최윤영.
요한계시록 진행과정 장 차 될 일 천년왕국(20:4-6)/흰보좌(20:11-15) 20
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
Chapter 10 – 추상 자료형 Outline 10.1 소개 10.2 Ada의 추상 자료형 10.3 C++의 추상 자료형
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
제 5 장 암호학의 수학기초 Network Security Lab Mun Hyung Jin.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
Chapter 06. 스택(Stack) Chapter 06-1: 스택의 이해와 ADT 정의.
2주차 – 수학적 배경 주교재 2장.
Data structures 02.2:mathematical induction 동의대학교 멀티미디어공학과 이광의 교수.
C언어 응용 제 13 주 그래프2, 정렬.
DataScience Lab. 박사과정 김희찬 (월)
CHAP 11: 해싱 순천향대학교 하상호.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
컴퓨터프로그래밍 개요 충북대학교 컴퓨터공학과 서 영 훈.
전자상거래 보안 (암호학과 네트워크보안) Chul Ho Rhee
제 11장 교락법과 일부실시법.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
4장 제어문 선택문: if 문, if – else 문, switch 문
2018학년도 대입 정보.
CHAP 11: 해싱 순천향대학교 하상호.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
강의 소개, 자료구조의 개념, SW 개발과 자료구조
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
CHAP 9: 정렬 (part 2) 순천향대학교 컴퓨터학부 하 상 호.
[CPA340] Algorithms and Practice Youn-Hee Han
제어문 & 반복문 C스터디 2주차.
4장 - PHP의 표현식과 흐름 제어-.
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
제12주제 갈보리언덕에서 누가복음 23:33-49.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
DataScience Lab. 박사과정 김희찬 (화)
CHAP 11 : 해싱.
[INA470] Java Programming Youn-Hee Han
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
U N I X 창원대학교 전자계산학과 김병찬.
작성일 참고서적 – Programing Game AI by Example
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
발표: G2 박진수 사도요한 준비: G2 박진수 사도요한 T3 김택준 미카엘
C언어 응용 제 15 주 검색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
유클리드 호제법에 대하여 과 목 명 : 수학사 발 표 자 : 수학과 4학년 김은미.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
耽羅國 建國神話 허남춘(제주대 국문학과 교수)
집합의 연산 총정리 수학 7-가 집합과 자연수 > 집합 > 9/20 수업계획 수업활동 [제작의도]
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Interactive Data Language
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Report #4 (1) (due 4/4) 문제 #1 3개의 막대 A, B, C와 원판 n개를 전달받아 Hanoi 탑 문제를 해결하는데 필요한 원판의 이동 회수를 구하여 반환하는 hanoi_tower(n, A, B, C)를 작성하라. 여기서 원판 n은 막대 A에 쌓여 있고.
DataScience Lab. 박사과정 김희찬 (화)
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
보고서 #4 (1) (제출기한: 10/6) #1 다음 그래프 G에 대해서 답하시오. (2*5 = 10)
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
자바 암호 프로그래밍 Java Cryptography Programming
Report #3- 문제 1 Set(집합) 추상 데이터 타입을 정의하고, 다음과 같은 연산자들을 포함시켜라. 여기서 S, S1, S2는 집합을 나타내고, i는 집합 원소를 나타낸다. 연산 의미 create() Return {} insert(S, i) If i є S then.
Presentation transcript:

최대 공약수 구하기 (1) 프로그램 예제2 : 최대 공약수 구하기 문제 해결 방법 구상 (아는 지식 정리) GCD1 알고리즘 두 자연수 a, b (a >= b)의 최대 공약수를 구하라. 문제 해결 방법 구상 (아는 지식 정리) 최대 공약수는 두 수 a, b의 약수 중에서 제일 큰 수 (GCD1) 어떤 수 n의 약수는 그 수를 1부터 n까지로 나누었을 때, 나머지가 없는 수이다. 최대 공약수는 두 수를 소인수 분해하여 찾을 수 있다. 두 수가 공통적으로 나누어지는 소인수들을 전부 곱하면 최대 공약수이다. GCD1 알고리즘 a의 약수를 구한다. b의 약수를 구한다. a, b의 약수에 공통으로 들어있는 가장 큰 수를 구한다. 기초컴퓨터프로그래밍

최대 공약수 구하기 (2) a, b의 약수를 구하여 배열 ad[], bd[]에 저장하는 알고리즘 idx1 := 1; idx2 := 1; for i := 1 to a do for i := 1 to b do if (a mod i = 0) then if (b mod i = 0) then ad[idx1] := i; bd[idx2] := i; idx1 := idx1 + 1; idx2 := idx2 + 1; endif endif endfor endfor 두 약수 배열에 공통으로 들어 있는 가장 큰 수를 찾는 방법 큰 수부터 비교 (예: 36과 16의 최대 공약수) 1 2 3 4 6 9 12 18 36 // 36의 약수 // 16의 약수 1 2 4 8 16 기초컴퓨터프로그래밍

최대 공약수 구하기 (3) 약수 배열에서 공통의 가장 큰 수를 찾는 알고리즘 i := idx1 – 1 // i를 ad 배열의 최대 첨자 값으로 초기화 j := idx2 – 1 // j를 bd 배열의 최대 첨자 값으로 초기화 flag := false // flag는 수를 찾았을 때 true 값을 가지는 변수 while ((flag = flase) and (i >= 1) and (j >= 1)) do if (ad[i] > bd[j]) then i := i – 1 else if (ad[i] < bd[j]) then j := j – 1 else flag = true endwhile return (ad[i]) 기초컴퓨터프로그래밍

최대 공약수 구하기 (4) GCD1의 효율 개선 방법 소인수 분해를 이용하는 알고리즘 (GCD2) 두 수중 작은 수보다 큰 약수는 구할 필요 없음 약수를 구하기 위해 제곱근까지의 수로만 나누고, 나누어지는 수의 몫과 제수를 약수로 취함 기타 소수(prime number)를 구할 때 적용한 방법 등 이용 소인수 분해를 이용하는 알고리즘 (GCD2) 두 수중 작은 수의 약수를 구하고 그중 소수를 배열에 저장 : pn[] gcd := 1 for i := 1 to maximum_index_of_pn while ((a mod pn[i]) = 0) and (b mod pn[i] = 0) do gcd = gcd*pn[i]; a = a/pn[i]; b = b/pn[i]; endwhile endfor 기초컴퓨터프로그래밍

최대 공약수 구하기 (5) Euclid Algorithm : GCD3 Euclid Algorithm 적용 예 최대공약수를 구하는 효율적인 방법 a if b = 0 GCD(a, b) = GCD(b, a mod b) otherwise function GCD3(a, b) if (b = 0) then a else GCD3(b, a mod b) end Euclid Algorithm 적용 예 72와 20의 최대공약수 GCD3(72, 20) = GCD3(20, 12) = GCD3(12, 8) = GCD3(8, 4) = GCD3(4, 0) = 4 int gcd3(int a, int b) { if (b==0) return(a); else return(gcd3(b, a%b)); } 기초컴퓨터프로그래밍

최대 공약수 구하기 (6) 알고리즘 비교 72와 20을 입력으로 했을 경우의 mod 연산 및 기타 연산 알고리즘 GCD1 (약수 구하여 비교) GCD2 (소인수 분해 이용) GCD3 (Euclid Algorithm) mod 연산 회수 기타 연산 92 12 (비교 연산) 22 없음 4 기초컴퓨터프로그래밍