1487, 4817, 8147은 3330씩 늘어나는 등차수열입니다. 이 수열에는 특이한 점이 두 가지 있습니다.
1자리, 2자리, 3자리의 소수 중에서는 위와 같은 성질을 갖는 수열이 존재하지 않습니다. 하지만 4자리라면 위엣것 말고도 또 다른 수열이 존재합니다.
그 수열의 세 항을 이었을 때 만들어지는 12자리 숫자는 무엇입니까?
Click- 세 수는 모두 소수입니다.
- 세 수는 각각 다른 수의 자릿수를 바꿔서 만들 수 있는 순열(permutation)입니다.
1자리, 2자리, 3자리의 소수 중에서는 위와 같은 성질을 갖는 수열이 존재하지 않습니다. 하지만 4자리라면 위엣것 말고도 또 다른 수열이 존재합니다.
그 수열의 세 항을 이었을 때 만들어지는 12자리 숫자는 무엇입니까?
에라스토테네스의 체를 이용 소수리스트를 구해 놓은 후, 1001부터 9999까지의 소수 i에 대해 i보다 큰 j와 i와 j사이의 차이만큼 j에 더한 값 k가 소수인지 확인을 하고, 세 수가 모두 소수이면, 세 수가 순열인지를 확인하였습니다.
<script language="Javascript" type="text/javascript">
/* 순열 판단 */
function isPermutation(num1, num2){
var d = [0,0,0,0,0,0,0,0,0,0];
for(var i=num1; i>=1; i/=10)
d[~~(i%10)] ++;
for(var j=num2; j>=1; j/=10)
if((--d[~~(j%10)]) < 0)
return false;
return true;
}
/* 소수 리스트 */
function eratos(max){
var PrimeArray = new Array();
PrimeArray[0] = PrimeArray[1] = false;
for(var i=2; i< max; i++) PrimeArray[i]=true;
for(var i=4; i<=max; i+=2)PrimeArray[i]=false;
for(var i=6; i<=max; i+=3)PrimeArray[i]=false;
for(var i=5; i*i<=max; i+=6){
if(PrimeArray[i]) for(var j=2*i; j<=max; j+=i)PrimeArray[j]=false;
if(PrimeArray[i+2]) for(var j=2*(i+2); j+2<=max; j+=i+2)PrimeArray[j]=false;
}
return PrimeArray;
}
function p049(){
var prime = eratos(10000);
var r= new Array();
for(var i=1001; i<10000; i+=(i%6==1)?4:2){
if(prime[i]){
var lim = i + (100000-i)/2;
for(var j=i+((i%6==1)?4:2); j< lim;j+=(j%6==1)?4:2){
var k = j+(j-i);
if(prime[j] && prime[k])
if(isPermutation(i,j) && isPermutation(i,k))// && i != 1487)
r[r.length] = i*100000000 + j*10000 + k;
}
}
}
alert(r);
}
</script>
댓글 없음:
댓글 쓰기