Ma
math

수학신문

포물선과 포물면
  • 김민찬
Jun 8, 2023 4:05 PM
난제-푸앵카레의 추측
  • 김민찬
May 25, 2023 5:32 PM
난제-펠의 방정식과 펠의 음의 방정식
  • 김민찬
May 25, 2023 5:24 PM
대충 정수문제
  • 엄
    엄준혁
May 11, 2023 4:15 PM
수학 퀴즈-복면산2
  • 엄
    엄준혁
May 11, 2023 3:48 PM
수학 퀴즈-복면산
  • 엄
    엄준혁
May 11, 2023 3:46 PM
4
삼각형의 무게중심에 관한 이모저모
  • 민
    민찬이여친
May 11, 2023 2:27 PM
A story of a four-legged goose.
  • 신
    신승환
May 11, 2023 2:22 PM
3
🦢👍
2
<특종> 가장 아름다운 삼각형을 찾아보자
  • 김민찬
May 11, 2023 2:21 PM
[김민찬, 미국 대학교에서 수학 분야 석사 학위 취득]
  • 민
    민찬이여친
May 11, 2023 2:18 PM
👍
1
나무위키
  • 엄
    엄준혁
May 11, 2023 2:08 PM
소수에 대해 신주환 기자 소수는 나누어떨어지는 수가 1과 자신뿐인 수로 개념만 보면 단순해
  • 신
    신주환
May 11, 2023 2:08 PM
1
차원에 대해서
  • 김민찬
May 11, 2023 2:06 PM
1
Ma
math
수학신문
신
신주환
May 11, 20233y ago

소수에 대해

신주환 기자

소수는 나누어떨어지는 수가 1과 자신뿐인 수로 개념만 보면 단순해 보일 수 있다. 그러나 소수는 수학자들 사이에서 활발히 연구되는 수이다. 설명 전에 이 코드는 설명할 내용에 기본이 소수를 구하여 출력하는 코드이다.
import time num = 0 x = 2 while True: for i in range(x-2): if x % (i+2)==0: num += 1 if num == 0: print(x) time.sleep(0.5) num = 0 x += 1
이 코드의 원리는 수에 1을 더해가며 그 수보다 작은 수를 모두 나눠 나누어 떨어지는 수가 1과 자신 뿐일때 출력하는 것이다.

RSA암호

소수의 활용, 그 첫번째는 바로 RSA암호이다. RSA암호는 임의의 수 소수를 곱한 수를 주면 그 두 소수가 무엇인지 맞히는 암호이다. 두 소수를 곱하는 건 쉽지만 곱한 수를 소인수분해하는 과정은 굉장히 어렵기 때문에 이러한 암호가 탄생하게 된 것이다. 지금까지는 암호의 원리를 가장 간단하게 설명했지만 더 복잡하게 들어갈 수 있다. 다음은 임의의 두 소수를 곱해서 곱한 값을 출력하는 코드이다.
import random, time x = 0 num = 0 list = [0, 0] while list[0] == 0:  x = random.randint(0, 10000)  for i in range(x-2):   if x % (i+2)==0:    num += 1  if num == 0:   list[0] = x     num = 0  time.sleep(0.5) while list[1] == 0:  x = random.randint(0, 10000)  for o in range(x-2):   if x % (o+2)==0:    num += 1  if num == 0:   list[1] = x  num = 0    print(str(list[0]*list[1]))
이 코드는 앞선 코드의 원리를 바탕으로 두 임의의 소수를 구하고 곱하는 코드이다.
다음은 암호해독 코드이다.
x = 1 num = 0 ip = int(input("num: ")) import time while True:  x += 1  for i in range(x-2):   if x % (i+2)==0:    num += 1  if ip % x == 0:   print(str(x) + ', ' + str(ip/x))   break  num = 0
다음 코드의 원리는 입력된 암호문에 소수를 2부터 차례대로 대입하여 나누었을 때, 나누어떨어지고 나눈 값이 소수인지를 판별해서 그 두 조건이 모두 일치하면 출력하는 방식이다.
파이선 코딩은 이런 식이다. 컴퓨터는 사람이 아니기 때문에 소수를 구하라고 해도 이 같은 일명 노가다를 해야한다. 하지만 컴퓨터는 빠르기 때문에 다음과 같이 몇십만개의 수를 대입하여 구하는 과정도 1초안에 해결할 수 있다.

골드바흐의 추측

이것도 코드다. 무슨 코든지는 말하지 않겠어 ;)
#modules import time #var number = 2 x = 1 num = 0 list = [0, 0] #main_code while True: x += 1 for i in range(x-2): if x % (i+2)==0: num += 1 if num == 0: for o in range(number - x-2): if (number - x) % (o+2)==0: num += 1 if num == 0: print(str(number) + ', ' + str(x) + ', ' + str(int(number - x))) number += 2 x = 1 time.sleep(0.5) num = 0 i = 0 o = 0
다른 기사 보기
1
👍
김민찬
May 11, 2023
f(나)=g(너)=h(우리)=k(세계)
See latest comments