최대 소인수 600851475143의 소인수 중에서 최대 값을 구하라. """ Largest prime factor The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ? """ class PrimeNumber: def __init__ ( self ): self .current = 1 self .num_set = set () def __iter__ ( self ): return self def __next__ ( self ): self .current += 1 while True : for i in self .num_set: if self .current % i == 0 : self .current += 1 break # Break current for loop else : break # Break the while loop and return self .num_set.add( self .current) return self .current if __name__ == '__main__' : number = 600851475143 prime_number = PrimeNumber() for n in prime_number: if n > number: break if number % n == 0 : print (n) https://projecteuler.net/proble...
while구문은 다른 프로그래밍 언어와 별반 다를 것이 없다. a, b = 0 , 1 while b< 50 : print (b, end= ' ' ) a, b = b, a+b 위 코드는 피보나치 수열을 출력한다. 특이하게도, while-else 구문도 존재하는데, while 뒤의 조건이 False가 되면 else 문으로 분기한다. a = 0 while a< 10 : print (a) a += 1 else : print ( "끝" ) do-while 문은 없고, while 뒤의 조건문이 True이면 무한루프가 된다. a = 0 while True : print (a) a += 1 if a>= 10 : break 또 다른 하나의 반복 구문은 for-in인데, 이것은 다른 프로그래밍 언어의 for-each 혹은 for : 구문 등과 유사하다. for item in [ 1 , 2 , 3 , 4 , 5 ]: print (item) for 다음에는 변수를, in 다음에는 리스트, 튜플, 딕셔너리 등의 컨테이너를 기술한다. 물론, 문자열도 쓸 수 있다. for char in "가나다라마바사" : print (char) 그런데, 파이썬에는 for만을 사용하는 전통적인 for(;;)구문은 없다. 만일, 증감하는 정수값이 필요한 경우에는 in 뒤에 range() 함수를 사용할 수 있는데, for i in range( 5 ) : print (i, end= ' ' ) # 0 1 2 3...
회문 구하기 두 개의 3자리 숫자의 곱으로 만들어지는 가장 큰 회문을 구하라. """ Largest palindrome product A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers. """ def is_palindrome (n): s = str (n) s2 = str () i = len (s) - 1 while i >= 0 : s2 += s[i] i -= 1 return s == s2 if __name__ == '__main__' : maxi = 0 for a in range ( 100 , 1000 ): for b in range ( 100 , 1000 ): num = a * b if is_palindrome(num): print (num) if num > maxi: maxi = num print ( "max = " , maxi) https://projecteuler.net/problem=4 회문 여부를 판별하기 위한 함수를 정의하였다. 함수가 입력 받은 숫자를 문자열로 변환 후 순서를 뒤집는다.
댓글
댓글 쓰기