프로그래밍/Python 49

Pollard's rho method 소개: 정수의 인수분해(factorizing integers) with Python

정의 (소수와 합성수) 1보다 큰 양의 정수 n에 대하여 (i) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하면, n을 합성수(合成數, composite number)라고 한다. 참고로 이 경우, a, b 중에 적어도 하나는 sqrt(n) 보다 작거나 같다. 합성수의 예로는 4, 6, 9, 24, 143 등이 있다. (ii) n = a * b 를 만족하고 1보다 큰 두 양의 정수 a와 b가 존재하지 않으면, 즉 n을 두 양의 정수의 곱으로 표현하는 방법이 1*n과 n*1 두 가지 뿐이면, n을 소수(素數, prime number)라고 한다. 소수의 예로는 2, 3, 5, 7, 11 등이 있다. n이 소수인지 아닌지 확인하려면, n을 2 보다 크거나 같고 sqrt(n) 보다 작거..

손으로 계산하는 긴자리 곱셈표 만들기 with Python

초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 Python 소스이다. (이 소스는 Jython이나 IronPython에서도 수정없이 그대로 실행된다.) 이항 연산자 // 는 Python의 정수나눗셈 연산자이다. # Filename: makeMultTable.py # # Print a multiplication table. # # Execute: python makeMultTable.py 230 5100 # # Date: 2009/03/06 # # import sys def printUsing(): print "Using: python makeMultTable.py [number1] [number2]" print "Print a multiplication table for the given two i..

문자열 거꾸로 하기 with Python

▒ Python 소스: testStringReverse.py #!/usr/bin/python # -*- coding: cp949 -*- s = "Hello, world!" s2 = "안녕하세요?" ######################################### t = s[::-1] # 문자열 거꾸로 하기 t2 = s2[::-1] # 문자열 거꾸로 하기 ######################################### u = ''.join(reversed(s)) # reversed(string) 함수 사용(Python 2.4 이상 가능) u2 = ''.join(reversed(s2)) # reversed(string) 함수 사용(Python 2.4 이상 가능) print( "s = " ..

손으로 만드는 나눗셈 계산표 with Python

다음은 초등학교에서 배우는 나눗셈 계산표를 만들어주는 Python 소스 코드이다. 나눗셈 계산표를 완성하고 나서 약수, 배수 관계를 알려준다. 아래의 소스는 Jython에서는 수정없이 그대로 실행되지만, IronPython에서는 인코딩 선언 부분을 # -*- encoding: ms949 -*- 대신 # -*- encoding: cp949 -*- # -*- encoding: CP949 -*- # -*- encoding: euc-kr -*- # -*- encoding: EUC-KR -*- 중 하나로 수정해야 실행된다. # -*- encoding: ms949 -*- # Filename: makeDivisionTable.py # # Purpose: Make a division table in a handy wr..

클래스 상속(subclassing) 예제 with Python (or Jython or IronPython)

Python 언어에서도 한 개의 소스 파일에 여러 개의 클래스가 존재해도 된다. 또 클래스명과 다른 파일명으로 저장해도 된다. Python 언어도 Java 언어 처럼 대소문자 구별을 엄격히 하므로 클래스를 선언하고 그 클래스로 객체 생성할 때 대소문자 구별을 꼭 지켜야 한다. 다음은 두 개의 클래스로 구성되어 있다. Parent는 부모 클래스이고 Child는 Parent에서 상속 받은 자식 클래스이다. # Filename: testSubclassing.py class Parent: def __init__(self, name): # 클래스 생성자 self.name = name def sayName(self): print("I am Parent, " + self.name) class Child(Parent)..

삼각형 출력 예제를 통한 여러 가지 소스 비교 with Python

콘솔에 삼각형 * * * * * * * * * * * * * * * ***************** 을 출력하는 Python 소스 코드를 작성해 보자. 이런 소스 코드의 작성은 학원이나 학교에서 프로그래밍 입문자에게 과제로 많이 주어지는 것 중의 하나이다. 코끼리를 보거나 만진 사람들이 저마다 그 생김새를 말할 때 제각기 다르게 표현할 수 있듯이 이런 소스 코드의 작성도 알고 보면 얼마든지 많은 방법이 있을 것이다. 여기서는 쉬운 코드 부터 작성해 보고 차츰차츰 소스를 바꾸어 가면서 Python 프로그래밍의 기초부분을 터득해 보기로 한다. 모든 소스 코드에서는 삼각형 출력 부분 담당 함수 printTriange()를 별도로 구현하였다. 우선 첫번 째 예제는 Python의 컨솔 출력 함수 print의 사용..

Python에서 공백 문자 없이 연속적으로 출력하려면

파이썬 언어에서 주로 쓰이는 컨솔 출력 구문은 print something 과 print something, 이다. 첫번 째 것은 출력 후 새 줄 문자(newline code, '\n')도 같이 내 보내는 것이고, 둘 째 것은 출력 후 다음에 만나는 print 구문은 선두에 공백문자(' ')를 먼저 내보내라는 의미이다. 즉, 파이썬 소스 코드 for i in range(10): print "*", print 은 * * * * * * * * * * 을 출력한다. 그렇다면 연속적으로 출력되는 별(*) 문자 사이의 공백문자가 출력되지 않게 할 수는 없을까? 이 질문에 대한 답은 당연히 "있다"이다. sys 모듈의 sys.stdout.write(string) 함수를 사용하면 된다. 예를 들어, 파이썬 소스 코드..

7비트 ASCII 코드표 만들기 예제 with Python (or Jython or IronPython)

ASCII(애스키)란 American Standard Code for Information Interchange의 줄임글로서, 영문자에 기초한 문자 인코딩이다. 이 문자 인코딩에는 C0 제어문자(C0 control character)도 포함되어 있다. ( 참고: ASCII - Wikipedia, the free encyclopedia ) 다음은 7bit ASCII 코드표를 만들어 보여주는 Python 소스 코드이다. 소스 코드 중에 진법변환에 필요한 함수 convertAtoI(string, radix) convertItoA(number, radix) 의 구현도 포함되어 있다. (아래의 소스는 Jython이나 IronPython에서도 수정없이 그대로 실행된다.) # Filename: makeAsciiTab..

진법(radix) 표 만들기 예제 with Python (or Jython or IronPython)

컴퓨터 프로그래밍에서 꼭 알아두어야 할 주요 진법은 당연히 10진법, 2진법, 8진법, 16진법이다. 다음은 0 에서 15 까지의 정수를 10진법, 2진법, 8진법, 16진법의 표로 만들어 보여주는 Python 소스 코드이다. 진법 변환에 필요한 함수 convertAtoI(string, radix) convertItoA(number, radix) 를 Python 코드로 자체 작성하여 사용하였다. (아래의 소스는 Jython이나 IronPython에서도 수정없이 그대로 실행된다.) # Filename: makeRadixTable.py # Show the radix table with 10-, 2-, 8-, 16-radices. # # Execute: python makeRadixTable.py # # Da..

대화형 모드의 진법(radix) 변환 예제 with Python

다음은 대화형 모드(interactive mode)에서 진법 변환(radix conversion)하는 Python 소스 코드이다. 메뉴는 주메뉴 Command: (S)et radix, (A)bout, (Q)uit or E(x)it 와 부메뉴 SubCommand: 'main()' to goto Main menu, 'exit()' or 'quit()' to exit 로 구성되어 있으며, 진법 변환의 핵심은 Python의 빌트인 함수 int(string, radix)와 소스 코드에 자체 작성된 함수 itoa(number, radix)의 사용이다. val = int(s, srcRdx) ret = itoa(val, destRdx) 지원되는 진법은 2진법에서 36진법까지이다. (Jython으로는 finally: 구..