9월 7, 2017의 게시물 표시

python2 prime number(소수) 구하는 알고리즘

소수 : 양의 약수가 1과 자기 자신 뿐인 1보다 큰 자연수 두 가지 방법이 있다. 첫 번째, 2부터 특정 양의 정수 n까지로 n을 나누었을 때 약수가 자기 자신 n만 있는 경우이다. 예를 들어, 7을 2,3,4,5,6,7로 순서대로 나누어 본다. 그리고 자기 자신 7 이외에 약수가 존재 하지 않는다면 7은 소수가 된다. #-*- coding: utf-8 -*- i = input("숫자") # 숫자를 입력 받아서 i에 할당 j = 2 while(True): # 2부터 시작해서 i를 j로 나누어서 나머지가 0이 될 때까지 j를 계속 증가     if(i%j ==0):         break     j +=1 if (i==j): # i와 j가 같을 때 즉 j가 i 자기 자신과 같으면 소수다.     print i,j     print i,"는 소수임" else:     print i,j     print i,"는 소수아님" 숫자7 7 7 7 는 소수임 두 번째, 첫 번째 방법처럼 2부터 굳이 자기 자신까지 나누어 볼 필요 없다. 2부터 특정 양의 정수 n의 제곱근 까지로 n을 나누었을 때 약수가 존재 한다면, n은 소수가 아니다. 예를 들어, 양의 정수 25가 소수인지 확인하기 위해서는, 2부터 25의 제곱근인 5인 (2,3,4,5)로 25를 나누었을 때 약수가 존재 한다면 25는 소수가 아니다.  #-*- coding: utf-8 -*- import math i = input("숫자") # 숫자를 입력받아서 i에 할당 j = 2 while(True):     if(j<= math.sqrt(i)): # i가 25일 때, 2,3,4,5 까지 나누어봄         if(i%j...

python2 2! + 3! + 4! + 5! ... + 20! 구하는 알고리즘

#-*- coding:utf-8 -*- sum = 0 i = 1 F =1 while(i<20):     i +=1     F = F*i     sum +=F; print sum 2! = 2 x 1  ===> i가 2일 때 F * i = 2 * 1 3! = 3 x 2 x 1 ===> i가 3으로 증가 F * i = (2*1) * 3 = 3 * 2 * 1 4! = 4 x 3 x 2 x 1 ===> i가 4로 증가 F * i = (3*2*1) * 4 = 4 * 3 * 2 * 1 5! = 5 x 4 x 3 x 2 x 1 ===> i가 5로 증가 F * i = (4*3*2*1) * 5 = 5 * 4 * 3 * 2 * 1 . .. ... .... 20! = 20 x 19 x 18 ... 3 x 2 x 1 ===> i가 20으로 증가 F * i = (19*18*..*2*1) * 20                                                  = 20 * 19 * 18 *... * 3 * 2 * 1

python2 피보나치 수열 합구하는 알고리즘 1+1+2+3+5+8+13+21...

#-*- coding:utf-8 -*- i=1 # 1항 j=1 # 2항 k=0 sum=2 # 1항 + 2항 더한값 for cnt in range(3,9): # 3,4,5,6,7,8     k=i+j # 3항 , 그다음 4항이 됨 3->4 4->5     sum+=k     i=j # 1항에 2항값 넣기 1->2   2->3     j=k # 2항에 3항값 넣기 2->3   3->4     #하나씩 댕기기 print sum 8항 까지합 1+1+2+3+5+8+13+21 =54 1항 = i = 1 2항 = j = 1 3항 = k = 1항(i)+ 2항(j) = 2 피보나치수열의 핵심은  i=j j=k  두 줄 한 항씩 밀어 넣기

python2 입력받은 자연수 약수 구하는 알고리즘

#-*- coding:utf-8 -*- n = input("숫자") #숫자 입력받기 for i in range(1,n+1): # n이 9라면 i 는 1부터 9까지 1,2,3,4,5,6,7,8,9     if(n%i ==0): # 9를 i로 나누었을 때 나머지가 0이면 약수         print i,"는",n,"의 약수임" print "##############"   # 밑에는 다른 방식 for i in range(1,n+1): # 위와 같음     mok = int(n/i) # 몫을 mok에 정수로 할당     nmg = n - mok*i # 나머지를 nmg에  할당     if(nmg==0): # 나머지가 0이면 약수         print i,"은",n,"의 약수임" a =[] # 리스트 초기화 N = input("숫자") # 자연수 N 입력받음 a.append(N) #입력받은 자연수 a[0]에 넣음 for i in range(N-1,-1,-1): # 9를 입력받으면 8부터 0까지 -1씩 줄어듬 8,7,6,5,4,3,2,1,0     try:# 마지막 i가 0이되면 ZeroDivisionError 예외가 발생 따라서 잡아준다.         ng = N % i # 나머지 계산         if(ng==0): #나머지가 0이면             a.append(i) #차례대로 리스트에 넣어줌     except:         continue for i in range(len(a)-1,-1,-1): # 리스트에 들어간 약수를 오름차순으로 출력하...