본문 바로가기

소수판별

[오일러프로젝트] 49번문제 1487, 4817, 8147은 3330씩 늘어나는 등차수열입니다. 이 수열에는 특이한 점이 두 가지 있습니다.세 수는 모두 소수입니다.세 수는 각각 다른 수의 자릿수를 바꿔서 만들 수 있는 순열(permutation)입니다.1자리, 2자리, 3자리의 소수 중에서는 위와 같은 성질을 갖는 수열이 존재하지 않습니다. 하지만 4자리라면 위엣것 말고도 또 다른 수열이 존재합니다.그 수열의 세 항을 이었을 때 만들어지는 12자리 숫자는 무엇입니까? 우선..4자리의 소수들을 구하고 brute-force를 통해서 등차수열을 만족하는 3개의 수를 구하고 그 3개의 수가 순열조합으로 나올 수 있는 수인지 확인... Python 조금 만지면 더 빠르게 될 것 같은데... 일단 skip. 근데 계속 파이썬으로만 풀게되네... 더보기
[오일러프로젝트] 41번문제 1부터 n까지의 숫자를 하나씩만 써서 만든 n자리 숫자를 팬디지털(pandigital)이라고 부릅니다. 2143은 4자리 팬디지털인데, 이 수는 동시에 소수이기도 합니다. n자리 팬디지털 소수 중에서 가장 큰 수는 무엇입니까? 가장 심플한 방식은 1 ~ 987654321까지 loop를 돌면서 소수인지 판정하는 것인데 이게 시간이 어마어마하게 걸린다... 그래서 일단 123은 제끼고 1234 ~ 123456789의 팬디지털 숫자를 모두 구한 후 이것을 소수인지 판별하며 가장 큰 것을 찾았음.. Python Ruby Perl 그런데 팬디지털 수를 만들어 List로 저장하는 로직들이 마음에 안든다.. 더 좋은 방법들이 있을 것 같은데...으.. 더보기
[오일러프로젝트] 37번문제 소수 3797에는 왼쪽부터 자리수를 하나씩 없애거나 (3797, 797, 97, 7) 오른쪽부터 없애도 (3797, 379, 37, 3) 모두 소수가 되는 성질이 있습니다. 이런 성질을 가진 소수는 단 11개만이 존재합니다. 이것을 모두 찾아서 합을 구하세요. (참고: 2, 3, 5, 7은 제외합니다) 특별한 내용은 없는 문제 2,3,5,10등을 이용하여 loop 조건을 더 타이트하게 주었으면 좀 더 빨리 끝났을듯.. Ruby Perl 더보기