반응형

Problem 42

주어진 텍스트 파일에 들어있는 '삼각단어'의 개수는?

def is_fun(a):
    alphaList = [chr(c) for c in range(ord('A'), ord('Z')+1)]
    add=0
    for i in a: add+=alphaList.index(i)+1
    j=0
    while add>0:
        j+=1
        add-=j
    if add==0: return 1
    else: return 0
    
with open('./project_euler/words.txt', 'r', encoding='utf-8') as f:
    data=f.read()
    f.close()
    words=data.replace("\"","").replace(",", " ").split()
    _total=0
    for i in words:
        _total+=is_fun(i)
    print(_total)
#tengst
#dev용식
'''
삼각수 공식으로
X=1/2n(n+1)로부터
2*X = n^2 + n이 되고.. 여기에서 
2*X의 sqrt를 적용한 값으로부터 탐색을 시작 할 수 있을 것 같았습니다.
'''

Problem 43

부분열에 관련된 특이한 성질을 가진 모든 팬디지털 수의 합

### 43
import itertools
#StolenByte
Total = 0
k = [2, 3, 5, 7, 11, 13, 17]
    

for i in itertools.permutations("".join([str(i) for i in range(0,10)])):
    p = "".join(i)
    isOK = 1
    
    for n in range(len(k)):
        nn = int(p[n+1:n+4])
        if nn % k[n] != 0:
            isOK = 0
            break

    if isOK == 1:
        Total += int(p)

print('Total : '+str(Total))
#StolenByte

Problem 44

합과 차도 모두 오각수인 두 오각수 차의 최솟값은?

list_ = [int(n * (3*n-1)/2)  for n in range(1,10000)]

from tqdm.notebook import tqdm
_result = []
for i in tqdm(range(len(list_))):
    for j in range(i+1, len(list_)):
        if ((list_[i]+list_[j]) in list_) and ((list_[i]-list_[j]) in list_):
            _result.append(list_[j]-list_[i])
            
print(_result)

 

Problem 45

오각수와 육각수도 되는 40755 다음으로 큰 삼각수는?

list_t = [int(n * (n+1)/2)  for n in range(1,100000)]
list_p = [int(n * (3*n-1)/2)  for n in range(1,100000)]
list_h = [int(n*(2*n-1)) for n in range(1,100000)]
for i in list_t:
    if (i in list_p)  and  (i in list_h):
        print(i)

 

Problem 46

(소수 + 2×제곱수)로 나타내지 못하는 가장 작은 홀수인 합성수는?

import math
def isGolder(num):
    print(num)
    for i in _list:
        temp = ( num - i ) /2 
        if math.sqrt(temp) %1 ==0:
            return True
    return False
num = 3
while True:
    if (isPirmiray(num) == False) and (num % 2 != 0):
        if isGolder(num) == False:
            print(num)
            break
    num += 1

에러 나는 부분의 마지막이 답이다.

 

Problem 47

서로 다른 네 개의 소인수를 갖는 수들이 처음으로 네 번 연속되는 경우는?

 

Problem 48

_list = sum([n**n for n in range(1, 1000)])
str(_list)[-10:]

 

Problem 49

세 항이 소수이면서 다른 수의 순열이 되는 4자리 수의 등차수열 찾기

1487, 4817, 8147은 3330씩 늘어나는 등차수열입니다. 이 수열에는 특이한 점이 두 가지 있습니다.

  • 세 수는 모두 소수입니다.
  • 세 수는 각각 다른 수의 자릿수를 바꿔서 만들 수 있는 순열(permutation)입니다.

1자리, 2자리, 3자리의 소수 중에서는 위와 같은 성질을 갖는 수열이 존재하지 않습니다. 하지만 4자리라면 위엣것 말고도 또 다른 수열이 존재합니다.

그 수열의 세 항을 이었을 때 만들어지는 12자리 수는 무엇입니까?

def isPermutation(i,j,z):
    permutation_j = set("".join(x)  for x in permutations(str(j),4))
    if str(i) not in permutation_j:
        return False
    permutation_z = set("".join(x)  for x in permutations(str(z),4))
    if str(i) not in permutation_z:
        return False
    return True
    
from tqdm.notebook import tqdm
_result = []
for i in tqdm(range(len(_list))):
    for j in range(i+1,len(_list)):
        for z in range(j+1, len(_list)):
            if (_list[z] - _list[j]) == ( _list[j] - _list[i]) and (isPermutation(_list[i],_list[j],_list[z]) ):
                _result.append([str(_list[i])+str(_list[j])+str(_list[z])])
print(_result)

Problem 50

1백만 이하의 소수 중 가장 길게 연속되는 소수의 합으로 표현되는 수는?

41은 소수이면서 다음과 같은 6개의 연속된 소수의 합으로도 나타낼 수 있습니다.

41 = 2 + 3 + 5 + 7 + 11 + 13

이것은 100 이하에서는 가장 길게 연속된 소수의 합으로 이루어진 소수입니다.

1000 이하에서는 953이 연속된 소수 21개의 합으로 가장 깁니다.

1백만 이하에서는 어떤 소수가 가장 길게 연속되는 소수의 합으로 표현될 수 있습니까?

 

 

Problem 51

일부 숫자를 치환했을 때 8개의 서로 다른 소수가 생기는 가장 작은 소수?

두 자리 수 *3의 첫번째 자리를 여러가지로 바꿨을 때 가능한 아홉 가지의 결과 중에서 13, 23, 43, 53, 73, 83의 여섯 개는 소수입니다.

56**3 의 3번째와 4번째 자리를 동일한 숫자로 바꿔서 만들어지는 10개의 다섯자리 수 중에서는 아래에서 보듯이 7개가 소수가 되며, 이것은 이런 식으로 7개의 소수가 만들어지는 첫번째 경우입니다. 이 소수 집단의 첫번째 수인 56003은 이런 성질을 갖는 가장 작은 소수입니다.

56003, 56113, 56333, 56443, 56663, 56773, 56993

위의 예처럼 원래의 일부를 동일한 숫자로 치환했을 때 8개의 소수 집단이 만들어지는 경우를 찾고, 그 집단에 속한 가장 작은 소수를 구하세요.
치환하는 자리는 인접하지 않아도 되고, 가장 앞부분을 치환하는 경우 거기에 0은 올 수 없습니다.

 

반응형

'문제 > Project Euler(프로젝트 오일러)' 카테고리의 다른 글

Problem 52~  (0) 2021.06.07
Problem 32 ~ 41  (0) 2021.02.26
Problem 22~ Problem 31  (0) 2021.02.03
Problem 12 ~ Problem 21  (0) 2021.01.19
Problem 1~Problem 11  (0) 2020.08.21

+ Recent posts