* Computer Science/Project Euler 47

project euler 46. problem

크리스티안 골드바흐는 모든 홀수인 합성수를 (소수 + 2×제곱수)로 나타낼 수 있다고 주장했습니다.9 = 7 + 2×12 15 = 7 + 2×22 21 = 3 + 2×32 25 = 7 + 2×32 27 = 19 + 2×22 33 = 31 + 2×12이 추측은 잘못되었음이 밝혀졌습니다.위와 같은 방법으로 나타낼 수 없는 가장 작은 홀수 합성수는 얼마입니까? 합성수를 소수로 + 2 x 제곱수로 나타내는 증명이 잘못 되었음을 밝히기 위해선 크게 2가지 과정이 필요하다 생각했습니다. 첫 째, 합성수 셋을 만든다. 둘 째, 주어진 합성수를 특정 조건에 대입하여 거짓인지 증명한다. 합성수의 조건은 "소수가 아니며, 모두 홀수이어야 한다" 이고, 그 증명 방법에는 합성수를 만들때 사용한 합성수 이하 범위를 가지는 소..

project euler 41.problem

1부터 n까지의 숫자를 하나씩만 써서 만든 n자리 숫자를 팬디지털(pandigital)이라고 부릅니다. 2143은 4자리 팬디지털인데, 이 수는 동시에 소수이기도 합니다.n자리 팬디지털 소수 중에서 가장 큰 수는 무엇입니까? 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 # coding=utf-8import math def isPandigital(n): List = [1, 2, 3, 4, 5, 6 ,7, 8, 9] if len(n) == 9: n = int(n) while n!=0: tmp = n % 10 n /= 10 if List[tmp-1] != 0: List[tm..

project euler 44. problem

오각수는 Pn = n (3n − 1)/2 라는 공식으로 구할 수 있고, 처음 10개의 오각수는 다음과 같습니다.1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...위에서 P4 + P7 = 22 + 70 = 92 = P8이 됨을 볼 수 있습니다. 하지만 두 값의 차인 70 − 22 = 48 은 오각수가 아닙니다.합과 차도 모두 오각수인 두 오각수 Pj, Pk 에 대해서, 그 차이 D = | Pk − Pj | 는 가장 작을 때 얼마입니까? 123456789101112131415list =[]result = [] for n in range(1, 3000): list.append((n*(3*n-1))/2)cnt = 0for n1 in list: cnt +=1 for n2 in list[..

project euler 37. problem

소수 3797에는 왼쪽부터 자리수를 하나씩 없애거나 (3797, 797, 97, 7) 오른쪽부터 없애도 (3797, 379, 37, 3) 모두 소수가 되는 성질이 있습니다.이런 성질을 가진 소수는 단 11개만이 존재합니다. 이것을 모두 찾아서 합을 구하세요.(참고: 2, 3, 5, 7은 제외합니다) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import math def isPrime(n): if n == 2 or n == 3: return True if n % 2 == 0 or n == 1: return False for i in range(3, int(math.sqrt(..

project euler 43. problem

숫자 1406357289은 0 ~ 9 팬디지털인데, 부분열에 관련된 재미있는 성질을 가지고 있습니다.d1을 첫째 자리수, d2를 둘째 자리수...라고 했을 때, 다음과 같은 사실을 발견할 수 있습니다.d2 d3 d4 = 406 → 2로 나누어 떨어짐d3 d4 d5 = 063 → 3으로 나누어 떨어짐d4 d5 d6 = 635 → 5로 나누어 떨어짐d5 d6 d7 = 357 → 7로 나누어 떨어짐d6 d7 d8 = 572 → 11로 나누어 떨어짐d7 d8 d9 = 728 → 13으로 나누어 떨어짐d8 d9 d10 = 289 → 17로 나누어 떨어짐위와 같은 성질을 갖는 0 ~ 9 팬디지털을 모두 찾아서 그 합을 구하면 얼마입니까? 1234567891011121314151617181920212223242526..

project euler 42. problem

n번째 삼각수는 tn = ½ n (n + 1) 이라는 식으로 구할 수 있는데, 처음 10개는 아래와 같습니다.1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다. 예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다. 이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다. 이 중에서 삼각단어는 모두 몇 개입니까? 1234567891011121314151617181920..

project euler 40. problem

소수점 뒤에 양의 정수를 차례대로 붙여 나가면 아래와 같은 무리수를 만들 수 있습니다.0.123456789101112131415161718192021...이 무리수의 소수점 아래 12번째 자리에는 1이 옵니다 (위에서 붉게 표시된 숫자).소수점 아래 n번째 숫자를 dn이라고 했을 때, 아래 식의 값은 얼마입니까?d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 12345678910111213141516171819202122232425262728293031def selectChr(count, length, base): tmp = length - base if tmp >= 0: count %= 10**(tmp+1) count /= 10**(tmp) return ..

project euler 39. problem

세 변의 길이가 모두 자연수 {a, b, c}인 직각삼각형의 둘레를 p 로 둘 때, p = 120 을 만족하는 직각삼각형은 아래와 같이 세 개가 있습니다.{20, 48, 52}, {24, 45, 51}, {30, 40, 50}1000 이하의 둘레 p에 대해서, 직각삼각형이 가장 많이 만들어지는 p의 값은 얼마입니까? 123456789101112131415161718n = 1000 List = range(0, n) for a in range(1, n/2): for b in range(1, n/2): for c in range(1, n/2): if a**2 + b**2 == c**2 and a+b+c maxVal: maxVal = List[i]print List.index(maxVal) # 840#print..