반응형
39자리 나르시시스트 수는 아래와 같습니다.
115132219018763992565095597973971522401
먼저 엑셀로 해보려고 했습니만 실패했습니다. 엑셀에서는 최대 15개의 유효숫자만 입력되기 때문입니다.
이렇게 입력을 해도,

최대 유효숫자를 제외한 나머지는 0으로 인식합니다.

이번에는 R을 이용해봤습니다. R도 17개까지밖에 유효숫자 입력이 안되는데, 큰 정수를 다루는 패키지가 있었습니다. gmp라는 패키지를 이용하였습니다.
> nar39=as.bigz("115132219018763992565095597973971522401")
> nar39
Big Integer ('bigz') :
[1] 115132219018763992565095597973971522401
입력이 잘 됩니다. 각각의 숫자로 쪼개주었습니다.
> nar39s=strsplit(as.character(nar39), "")[[1]]
> nar39s
[1] "1" "1" "5" "1" "3" "2" "2" "1" "9" "0" "1" "8" "7" "6" "3" "9" "9"
[18] "2" "5" "6" "5" "0" "9" "5" "5" "9" "7" "9" "7" "3" "9" "7" "1" "5"
[35] "2" "2" "4" "0" "1"
숫자벡터로 변환해줍니다.
nar39s=as.numeric(nar39s)
각각 39제곱을 하고 더해주었습니다.
my_sum=0
for (i in 1:39){
as.bigz(nar39s[i])^39
my_sum=my_sum+as.bigz(nar39s[i])^39
}
처음 입력한 수에서 빼면 0이 나와야 합니다. 확인해봅시다.
> my_sum-nar39
Big Integer ('bigz') :
[1] 0
0이 나옵니다. 검증 완료입니다.
전체 코드는 아래와 같습니다.
nar39=as.bigz("115132219018763992565095597973971522401")
nar39s=strsplit(as.character(nar39), "")[[1]]
nar39s=as.numeric(nar39s)
my_sum=0
for (i in 1:39){
as.bigz(nar39s[i])^39
my_sum=my_sum+as.bigz(nar39s[i])^39
}
반응형
'etc > 쉬운 수학이야기' 카테고리의 다른 글
감마함수 유도하기 (Part2) (5) | 2021.08.17 |
---|---|
감마함수 유도하기 (Part1) (0) | 2021.08.11 |
정의역의 확장 (0) | 2021.08.01 |
피보나치 수열과 토끼 문제 (왜 피보나치 수열이 성립할까?) (0) | 2021.07.13 |
나르시시스트 수 (자아도취된 수) (0) | 2021.07.09 |
수학적인 점과 선 시각화 방법 (0) | 2021.06.27 |
파이 어디까지 구했을까 (0) | 2021.05.20 |
파이에 숨겨진 신기한 수열들 (2) | 2021.05.19 |
댓글