Python 을 사용 하여 수선화 문 제 를 풀다.

2439 단어 python
제목:모든 수선화 수 를 출력 합 니 다.수선화 수 란 세 자릿수 를 말 하 는데,그 숫자 들 의 입방 과 는 그 숫자 자체 와 같다.예 를 들 어 153 은 하나의 수선화 수로 153=1 세제곱+5 세제곱+3 세제곱 이기 때문이다.
해결 방법:
방법 1:목록 유도 식 사용
1 data=[i for i in range(100,1000)if pow(i//100,3)+pow(i//10%10,3)+pow(i%10,3)==i]

이 방법 은 비교적 간단 하지만 숫자 는 100-999 에 불과 하 다.이 범 위 를 넘 으 면 1000 을 제외 해 야 하기 때문에 방법 2 에서 나 는 분해 방법 을 사용 하여 한 숫자 를 한 자리,10 자리,백 자리,천 자리,만 자리 등 으로 분해 하기 로 결정 했다.그러면 큰 숫자 를 구 할 수 있 고 코드 도 비교적 간결 하 다.
방법 2:함수 와 순환 사용
 1 def d():
 2     def f(n):
 3         c=list(n[::])
 4         return c
 5     for i in range(100,100000):
 6         d=f(str(i))
 7         s=0
 8         for j in d:
 9             s+=pow(int(j),3)
10         if(s==int(i)):
11             print("%d"%s)
12 d()

프로그램 실행 결과:
153370371407
주해:문 제 를 풀 고 보 니 수선화 수가 이 네 개 밖 에 없 었 는데 문 제 를 해결 할 때 우 리 는 사전에 몰 랐 기 때문에 저 는 개인 적 으로 여러분 들 이 방법 2 를 선택 하 는 것 을 추천 합 니 다.

좋은 웹페이지 즐겨찾기