파이썬으로 수학문제 풀기- 프로젝트 오일러(project euler, 22번부터)

프로젝트 오일러 29번 문제 - Distinct powers

a,b 의 범위가 동일하게 2부터 5까지의 정수로 주어졌을때, "a의 b거듭제곱"을 모두 나열해 보면,

2^2, 2^3, 2^4, 2^5

3^2, 3^3, 3^4, 3^5

4^2, 4^3, 4^4, 4^5

5^2, 5^3, 5^4, 5^5

모두16개의 숫자가 나오고, 2^4 과 4^2 은 동일한 값이기 때문에, 숫자는 총 15개 입이고, 이것을 Distinct Powers라고 하네요.

같은 방법으로 2부터 100까지의 정수범위에서, 서로의 거듭제곱수를 계산하면, 총 몇개의 다른 숫자가 나오는가 하는것이 문제입니다.

루프문을 두개를 중첩시키고, 각각의 제곱을 해서, List에다 하나씩 append를 시키면 될것 같네요.

mylist=[]
for a in range(2,6):
    for b in range(2,6):
        value=pow(a,b)
        print(value,end=',')
        mylist.append(value)
    print()
print(len(mylist))
4,8,16,32,
9,27,81,243,
16,64,256,1024,
25,125,625,3125,
16

위의 결과에서 16은 중복이기 때문에, 조건문을 하나 달아줘야 겠네요. 그리고 범위 range(2,6) 을 2부터 100까지인 range(2,101)로 바꿔주면 됩니다.

mylist=[]
for a in range(2,101):
    print(a,end=',')
    for b in range(2,101):
        value=pow(a,b)
        if mylist.count(value) ==0:
            mylist.append(value)
print()
print("answer:",len(mylist))
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,
answer: 9183

 

 

 

댓글

댓글 본문
작성자
비밀번호
버전 관리
nomadlife
현재 버전
선택 버전
graphittie 자세히 보기