클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호...

6
소프트웨어로 배우는 수학 클릭 클릭! 소수 판별 게임 만들기 수학자를 매료시키는 소수가 소프트웨어와 만나면 어떨까요? 1740만 자리에 육박하는 매우 큰 소수를 찾아내고, 우리의 비밀을 암호화해서 지켜내기까지 합니다. 앞으로 또 어떤 특별한 능력을 발휘할지는 아무도 모르지요. 우리는 그 기초를 다지기 위해 지난 호에 소개했던 소수 판별 프로그램을 활용해 간단한 게임을 만들어 봅시다. 조가현 기자([email protected]) 콘텐츠·도움 김재휘(엔트리교육연구소 연구원) 일러스트 엔트리교육연구소 편집자주 수학 문제를 푸는 프로그램을 만드는 활동을 통해 수학과 소프트웨어 두 마리 토끼를 한 번에 잡으세요! 엔트리에 대해 궁금하다면 play-entry.org로 놀러 오세요! lab `la E crk` ` l a b `l ab= X mo l = J d obj 엔트리 2월.indd 84 2016-01-20 오후 1:57:45

Upload: others

Post on 27-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

소프트웨어로 배우는 수학

클릭 클릭!

소수 판별 게임 만들기

수학자를 매료시키는 소수가 소프트웨어와 만나면 어떨까요? 1740만

자리에 육박하는 매우 큰 소수를 찾아내고, 우리의 비밀을 암호화해서

지켜내기까지 합니다. 앞으로 또 어떤 특별한 능력을 발휘할지는 아무도

모르지요. 우리는 그 기초를 다지기 위해 지난 호에 소개했던 소수 판별

프로그램을 활용해 간단한 게임을 만들어 봅시다.

글 조가현 기자([email protected]) 콘텐츠·도움 김재휘(엔트리교육연구소 연구원)

일러스트 엔트리교육연구소

편집자주

수학 문제를 푸는 프로그램을

만드는 활동을 통해 수학과

소프트웨어 두 마리 토끼를

한 번에 잡으세요!

엔트리에 대해 궁금하다면

play-entry.org로 놀러 오세요!

` l ab` l aEcr k`

` l a b

` l ab=Xmol

=

Jd obj

엔트리 2월.indd 84 2016-01-20 오후 1:57:45

Page 2: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

85

누구에게나 비밀이 있습니다. 우리 가족만 간직한 비밀이 있고, 친구끼리만 공유하는 비밀

도 있지요. 그래서 SNS나 메일에서 나눈 이야기는 다른 사람이 보지 못하도록 암호화합니

다. 스마트폰이나 컴퓨터로 물건을 살 때도 마찬가지입니다. 주소나 전화번호, 계좌번호,

카드번호 등 개인정보를 다른 사람이 보지 못하도록 풀기 어려운 암호를 걸어두지요. 그런

데 여기에 쓰이는 암호가 소수와 관련이 있습니다.

현재 가장 널리 쓰이고 있는 RSA 암호는 큰 수를 두 소수의 곱으로 나타내는 것이 어렵

다는 원리를 이용한 것입니다. 예를 들어 90522

0186434063을 소인수분해하라고 하면 어떨까요?

이 수는 인수를 2개밖에 가지고 있지 않아 소인수

분해하기가 어렵습니다. 하지만 두 인수 12049523

과 75124981을 알려준 뒤 곱하라고 하는 건 매우

쉽지요. RSA 암호는 이처럼 두 소수를 곱하는 건

쉽지만 인수가 2개인 합성수를 소인수분해하는 건

어렵다는 점을 이용한 암호입니다. 여기서는 8자리

소수를 이용했지만 실제 암호에서는 60자리 이상 소수를 사용하기 때문에 컴퓨터라고 해

도 암호를 풀 수가 없는 거지요.

이런 RSA 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고 할 수 있습니다. 이 암호

를 개발한 수학자 로널드 라이베스트와 아디 샤미르, 레오나르드 아델만은 1982년 ‘RSA 시

큐리티’라는 회사를 세웠고, 이 회사는 매년 1조 원이 넘는 막대한 돈을 벌고 있지요. 세 수

학자는 2002년 컴퓨터 과학의 노벨상이라고 불리는 ‘튜링상’도 받았습니다.

소수와 소프트웨어가 만난 또 다른 예는 세상에서 가장 큰 소수를 찾는 일입니다. 소수

는 무한히 많기 때문에 가장 큰 소수라는 건 이 세상에 존재하지 않습니다. 다만 현재까지

발견한 소수 중에서 가장 큰 수를 그렇게

부르지요. 현재까지 발견된 소수 중 가장

큰 수는 257885161-1로 무려 1740만 자리입

니다. 36만 개의 컴퓨터 프로세서가 초당

150조 회의 연산을 한 결과로, 2013년 미

국의 수학자 커티스 쿠퍼가 찾았지요. 지

금도 많은 수학자들이 더 큰 소수를 찾기

위해 수십 만 대의 컴퓨터를 돌리고 있습

니다.

소수 + 소프트웨어 = RSA 암호

RSA 암호를 개발한 수학자. 차례로 로널드 라이베스트와 아디 샤미르,

레오나르드 아델만. 이들의 이름 이니셜을 따 RSA 암호라 부릅니다.

GIB

서던캘리포니아대

엔트리 2월.indd 85 2016-01-20 오후 1:57:46

Page 3: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

도전! 소수 판별 게임61은 소수일까요? 합성수일까요? 수가 등장하면 재빨리 소수인지 아닌지 판단해 소수면 소수,

합성수면 합성수를 클릭하는 게임을 만들어 봅시다. 정답을 맞히면 10점이 올라가고, 틀리면

10점이 감점됩니다.

86 수학동아

알고리즘 스케치

프로그래밍 기초 다지기

★ 변수

프로그램에서 어떤 정보를 기억하기 위해서는 ‘변수’라는 공

간이 필요합니다. 변수는 숫자와 문자를 넣을 수있는 특별

한 상자라고 할 수 있습니다. 상자에 무엇이 들어있는지 알

기 쉽게 이름도 붙여주지요. 변수 안에 들어간 정보는 블록

의 명령을 통해 프로그램 실행 중에 바뀔 수 있습니다.

★ 소수 판별 게임에서 변수

소수 판별 게임에서는 2부터 99까지 수 중에서 무작위로 하

나를 골라 게임 플레이어에게 보여줍니다. 따라서 수를 골

라 넣을 ‘n’이라는 변수가 필요합니다. 이 n이 소수인지 아닌

지 판별하기 위해서는 2, 3, 4, 5, …로 차례로 나눠 봐야 합

니다. 그래서 이렇게 나누는 수를 저장할 ‘a’라는 변수가 있

어야 합니다. 소수인지 아닌지 판단해서 저장해 둘 ‘소수여

부’라는 변수도 필요합니다. 이 변수의 결과에 따라 게임 플

레이어의 답이 맞으면 점수를 올려주고, 틀리면 점수를 깎

을 ‘점수’라는 변수도 있어야 하지요.

★ 신호

소수 판별 게임에서는 여러 가지 오브젝트가 등장합니다.

각각의 오브젝트는 명령 블록을 조립한 코드를 갖고 있는

데, 이 코드가 언제 실행될지 결정할 때 ‘신호’를 사용합니

다. 예를 들어 A라는 오브젝트에서 신호를 보내면 이 신호를

받은 오브젝트 B에서 코드를 실행할 수 있습니다.

알고리즘 스케치

★ ‘문제’ 글상자

➊ ‘문제’라는 글상자를 만듭니다.

➋ 시작하기 버튼을 클릭했을 때 ‘문제 생성’ 신호를

보냅니다.

➌ ‘문제 생성’ 신호를 받으면 2부터 99까지 수 중에서 무작

위로 수를 고르고, 이 수가 소수인지 판별합니다. 이때 지난

호에 소개한 알고리즘을 활용합니다.

➍ 문제를 만드는 동안 글상자를 숨깁니다. 소수 판별이 끝

난 뒤 만든 문제를 글상자에 적어 보여줍니다. 컴퓨터가 소

수 판별을 하기도 전에 게임 플레이어가 답을 내면 오류가

발생하기 때문입니다.

➎ ‘문제’ 글상자로 돌아와 초시계 관련 블록을 활용해 30초

동안 게임을 진행할 수 있도록 만듭니다.

★ ‘소수’, ‘합성수’ 글상자

➊ ‘소수’라는 글상자를 만듭니다.

➋ 소수라는 오브젝트를 클릭했을 때 소수가 맞으면 10점을

더하고 호루라기 소리를 재생합니다. 소수가 아니면 -10점

을 더하고 위험 경고 소리를 재생합니다.

➌ 다음 문제를 생성하도록 신호를 보냅니다.

➍ ‘합성수’라는 글상자를 만들고 합성수가 맞으면 10점을

더하고, 틀리면 -10점을 더합니다.

엔트리 2월.indd 86 2016-01-20 오후 1:57:48

Page 4: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

87

소수 판별 게임을 만드는 과정을 동영상으로

확인해 보세요. ALLeVIEW 앱으로 87쪽을

스캔하면 동영상을 볼 수 있습니다.

엔트리 프로그래밍

문제

‘문제 글상자’를 클릭합니다. <시작>에서

블록과 블록을

차례로 가지고 와서 조립합니다.

<시작>에서 블록을 가지고

옵니다. [속성] 탭에서 ‘소수여부’와 ‘n’, ‘a’, ‘점수’ 변수를

만듭니다. 이때 점수 변수를 제외한 모든 변수는

‘변수 보이기’의 선택을 해제합니다. 그리고 초깃값을

정해줍니다. 변수 n은 2부터 99까지 수 중에서 무작위로

하나를 골라 정합니다.

엔트리봇를 삭제하고 를 누른 뒤 <글상자> 탭에서

글상자 오브젝트를 세 개 만듭니다. 내용에 각각 ‘문제’,

‘소수’, ‘합성수’라고 적습니다. 그러면 화면에 각각의

상자가 생기는데 원하는 위치에 가져다 놓고 꾸밉니다.

새로운 문제를 만들라는 신호를 보낼 수 있게 ‘문제

생성’ 신호를 만듭니다. 신호는 <속성> 탭에서 <신호>를

클릭해 만들 수 있습니다.

1 3

4

2

문제

엔트리 2월.indd 87 2016-01-20 오후 1:57:49

Page 5: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

88 수학동아

<글상자>의 블록을 이용해 n값을

글상자에 나타냅니다. 그리고 <생김새>의

와 블록을 왼쪽 아래와 같은 위치에 끼워

넣습니다. 그래야 소수 판별이 끝난 뒤 게임플레이어가

주어진 수를 볼 수 있습니다.

‘소수 글상자’를 클릭합니다. 게임 플레이어가 소수

글상자를 클릭하면 즉, 변수

소수여부에 있는 수가 소수인지 묻습니다. 답이 맞으면

점수에 10점을 더합니다.

정답이 맞으면 호루라기, 틀리면 위험 경고 소리가

나도록 <소리> 탭에서 ‘소리 추가’를 합니다. 그리고

<블록> 탭의 <소리>에서

블록을 가지고 옵니다.

지난 호 마지막 미션으로 만들었던 알고리즘을

이용해서 n값이 소수인지 아닌지 판별해 봅시다. n이

소수이면 소수여부의 값을 소수라고 정하고, 아니면

합성수라고 정합니다.

5

6

7

8

지난 호 마지막 미션으로 만들었던 알고리즘을

‘소수 글상자’를 클릭합니다. 게임 플레이어가 소수

문제

문제

소수

소수

엔트리 2월.indd 88 2016-01-20 오후 1:57:50

Page 6: 클릭 클릭! 소수 판별 게임 만들기download.play-entry.org/data/수학동아 2월호 엔트리.pdf · 이런 rsa 암호는 소수와 소프트웨어가 만나 만든 걸작품이라고

미션! 50보다 큰 소수를 맞혔을 때는

20점이 올라가도록 프로그램을

수정해 보세요! 예시 답안은

상단의 QR코드로 확인하세요!

스마트폰으로 QR코드를

읽으면 미션의 예시답안을

볼 수 있습니다.

‘소수 글상자’에 있는 코드를 복사한 뒤 ‘합성수

글상자’에 복사합니다. 그리고 소수여부의 값만

소수에서 합성수로 바꿉니다.

‘문제 글상자’를 클릭합니다. 게임을 30초 동안

진행하기 위해서 초시계를 추가합니다. <계산>에 있는

블록을 가지고 와

블록 아래에 조립하면

됩니다. 초시계가 30초가 될 때까지 기다립니다.

30초가 되면 초시계를 정지하고 시간 종료라고

나타냅니다. 마지막으로 모든 코드를 멈춥니다.

만약 소수가 아니라면 점수에 -10점을

더합니다. 동시에 위험 경고 소리를 재생합니다.

블록에서 항목을 위험

경고로 바꾸면 됩니다. 다음 문제가 만들어질 수

있도록 를 보냅니다.

9

11

‘문제 글상자’를 클릭합니다. 게임을 30초 동안

진행하기 위해서 초시계를 추가합니다. <계산>에 있는

10 합성수

문제

소수

엔트리 2월.indd 89 2016-01-20 오후 1:57:51