1.다양한 응용문제해결하기

예제1) 함수를 이용하여 팩토리얼 계산프로그램을 구현하고 0을 입력하면 종료하도록 만들기

#y라는 변수를 쓰기위해서는 y=1이라고 초반에 설정 해둬야한다. def 만 쓰는게 아니라 for도 쓰기 때문인듯

 

예제2)369게임 프로그램

13이나 31처럼 3이 들어가도 박수를 치는것으로 할 때, "3" in str(n)으로 조건을 준다.

 

예제3)랜덤 구구단퀴즈 import random, import time

예제4)소수구하기 (prime number)

1)else문 이용

n=int(input("수를 입력하시오"))
for t in range(2,n,1):
    if n%t==0:
        print("%d는 %d로도 나눠지므로  소수가 아님" %(n,t))
        break
else: #들여쓰기 하게되면 n-2만큼 print가 출력됨
    print("%d는 소수다." %n)

2)함수이용

def f(n):
    for t in range(2,n,1):
        if n%t==0:
            return False
    return True

n=int(input("수를 입력하시오"))

a=f(n)
if a==True:
    print("소수다")
else:    #a=False
    print("소수가 아님")

 

예제4-1) 2부터 50까지의 수 중에서 소수를 찾아서 소수의 개수와 합계를 구하기

변수 f(t) f(n) 주의할 것. 

예제5)최대공약수 구하기 (유클리디안과 일반적인 방법 비교)

 

n1=int(input("숫자 입력"))
n2=int(input("숫자입력"))
a=1
for i in range(1,n1+1):
    if (n1%i==0) and (n2%i==0):
        a=i   #if문 아래에 명령문이 반드시 필요
print("최소공배수는 %d"%a)
      

유클리드 호제법. a,b 입력

a==b 이면 a

a>b 이면 a=a-b

a<=b이면 b=b-a

알고리즘의 중요성을 알 수 있다.

숫자가 커지면 f()는 0.09초 g()는 여전히 0초가 소요됨.

 

 

예제6)피보나치수열 - 1.무작정 더한다. 2.재귀적수식 3.수학공식

2.재귀함수

#30번째 이상은 안된다. 

while 문이 false가 될일이 없으므로 무한반복된다.

return은 show라고 이해해도 될 것 같다

 

3.수식

피보나치 수학공식

# 큰숫자도 가능

 

4. 2와 3의 소요시간비교

#큰숫자는 안나오는줄 알았는데 시간이 오래걸린다. 40번째 피보나치 계산하면 23초가 걸리는 것을 확인할 수 있다.

#함수 선언 2가지를 했는데 fibo2(n)에서 return 선언을 안해서 계속 마지막줄이 출력되지 않음

 

4.math 라이브러리 활용

 

import math as m

n=1.6789 

반올림 round()    math.round(n,2) 1.68

올림 ceil()          math.ceil(n)       2

내림 floor()        math.floor(n)     1

버림 trunc()       math.trunc(n)     1

 

 

절대값 fabs()     math.fabs(-3.4)  3.4

거듭제곱 pow()   math.pow(2,10)  2^10

팩토리얼 factorial()  math.factorial(5) 5!

최대공약수 gcd()    math.gcd(10,15)   5     #great common deivisior

제곱근 sqrt()        math.sqrt(5)

 

    

밑이 n인 로그함수 log(p,n)  math.log(1000,10)   3      #log n (P)

 

+ Recent posts