본문바로가기
자유게시판
수학을 주제로 떠들어 보세요!
[수학 정보] 파이썬(대52) 구현 도와주세요!!
pure math 2022.02.19 04:38 조회 495

대 52번 문제를 변형해서 예를 들어 2/5면, 1/(2+ 1/2)이렇게 표현할 수 있는데, 그래서 차례로 a, b, c.....이걸 표현할려고 코드를 만들었어요...(여기서 a는 2, b는 2, c는 존재 X) 근데 자꾸 안되네요... 혹시 코드 수정해주시거나 만들어주실 분!!!! 도와주세요!!!!!!!

이건 코드입니다.

참고로, Visual Studio Code로 하고 있습니다.

from math import *

n = str(int(input("Input Number : "))/int(input("Input Number : ")))

def f(x) :

    p = 1/x - (1/x // 1)

    return p

def g(k) :

    if (k > 1) : f(g(k-1))

    if k == 1 : f(n)

    if k == 0 : n

def a(k) :

    p = (1/g(k-1)) // 1

    return p

wow = []

k = 1

while a(k) == (a(k) // 1) :

    wow.append(a(k))

    k += 1

print(wow)

  •  
    진리를 찾아서 Lv.5 2022.02.20 01:20

    up = int(input("분자를 입력하세요 : "))

    down = int(input("분모를 입력하세요 : "))

     

    while type(down/up) == float:

        print(int(down/up))

        down = down - up*int(down/up)

        tmp = down

        down = up

        up = tmp

    댓글 작성하기 좋아요0 댓글수3
    •  
      pure math Lv.7 2022.02.20 02:06

      저기.....혹시.... 천재에요??????????????????????????????????????????

      아니 이걸.....

      아니!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

      진리를 찾아서님

      항상 감사합니다

      좋아요0
    •  
      진리를 찾아서 Lv.5 2022.02.20 02:17

      다시 보니 while type(down/up) == float: 이 부분은 while True:로 바꾸어도 됩니다.(사실 저도 만들고 원리는 잘 모른채 테스트 몇 번해보니까 되길래 그냥 올렸습니다. 다시 꼼꼼히 검토해보니 수정하는게 더 자연스러울 것 같네요. 물론 while type(down/up) == float:로 해도 결과에 이상은 없습니다.)

      좋아요0
    •  
      pure math Lv.7 2022.02.20 04:48

      혹시..... n번쨰 쌍둥이소수 구하는 알고리즘도 봐주실 수 있으신가요??

      def is_prime(n) :

          if n % 2 == 0: return False

          k = 3

          while k <= (n**(1/2)):

              if n % k == 0: return False

              k += 2

          return True

       

      def wow_prime(n) :

          if is_prime(n) == True :

              if is_prime(n + 2) == True :

                  return True

              if is_prime(n + 2) == False :

                  return False

       

      k = 1

      w = []

      n = int(input("Input Number : "))

      while k <= n :

          if wow_prime(k) == True :

              w.append(k)

              k += 1

          if wow_prime(k) == False :

              k += 1

      print(w)

      좋아요0
  •  
    진리를 찾아서 Lv.5 2022.02.20 02:23

    p.s. 이 프로그램은 while문 안의 내용을 계속 반복하다가 시행이 끝날 때가 되면 0으로 나누는 오류를 일으켜 프로그램을 중단시키는 원리이기 때문에 vscode가 아닌 다른 곳에서 시행하면 시행이 안 될수도 있습니다. 파이썬 기본 idle에선 시행되지 않네요.)

    댓글 작성하기 좋아요0 댓글수1
    •  
      pure math Lv.7 2022.02.20 02:34

      아 그건 제가 고쳤죠. 후후후후후후후후

      이걸 바꿔서 리스트에 계속 추가하고, 그 리스트를 출력하는 것도 좋을 것 같네요!

      수학도 잘하고, 코딩도 잘하고, 인성까지 좋은 당신은 설마 도덕책..?

      좋아요0
  •  
    진리를 찾아서 Lv.5 2022.02.20 19:25

    def is_prime(n) :

     

        if n % 2 == 0: return False

        k = 3

     

        while k <= (n**(1/2)):

            if n % k == 0: return False

            k += 2

     

        return True

     

     

     

    def wow_prime(n) :

     

        if is_prime(n) == True :

     

            if is_prime(n + 2) == True :

                return True

     

            elif is_prime(n + 2) == False :

                return False

       

        elif is_prime(n) == False:

            return False

     

     

     

    k = 1

    i = 2

    w = []

    n = int(input("Input Number : "))

    while k <= n :

        if wow_prime(i) == True:

            w.append(i)

            k += 1

            i += 1

        elif wow_prime(i) == False:

            i += 1

     

    print(w)

    댓글 작성하기 좋아요0 댓글수1
    •  
      pure math Lv.7 2022.02.21 08:56

      와아!!!! 정말 감사합니다!

      좋아요0
  • 폴리매스 문제는 과학기술진흥기금 및 복권기금의 재원으로 운영되고, 과학기술정보통신부와 한국과학창의재단의 지원을 받아 수행된 성과물로 우리나라의 과학기술 발전과 사회적 가치 증진에 기여하고 있습니다.

  • ☎문의 02-6749-3911