
Dacă ești fan al serialului de televiziune „The Big Bang Theory”, atunci știi că Sheldon poartă adesea o cămașă cu 73 pe ea.
În cel de-al zecelea episod al celui de-al patrulea sezon din The Bing Bang Theory, difuzat pe 9 decembrie 2010, https://www.imdb.com/title/tt1632225/characters/nm1433588 , Sheldon întreabă care este numărul preferat al tuturor.
Raj sugerează 5318008. Întoarceți acest număr cu susul în jos pentru a vedea ce are în minte Raj.
Sheldon declară că cel mai bun număr este 73 deoarece satisface următoarele două proprietăți: a. proprietatea produsului și b. proprietatea oglinzii:
- p=73 este i = al 21-lea număr prim. The produs dintre cifrele lui p, 7 și 3, este egal cu i.
- Reversul cifrelor lui 73 (it oglindă) este 37. 37 este al 12-lea număr prim. 12 este inversul lui 21, iar 21 este produsul cifrelor lui 73.
Vom numi un număr prim care satisface atât proprietatea produsului, cât și proprietatea oglindă „Sheldon Prime”.
Sheldon adaugă că 73 în baza doi, 1001001, este un număr palindrom. Cu toate acestea, multe numere de bază doi sunt numere palindrom; 5 în baza doi este 101.
Acest episod a fost al 73-lea episod din Bing Bang. Actorul Jim Parsons s-a născut în 1973 și avea 37 de ani când a fost difuzat episodul. Coincidențe?
A 73-a zi dintr-un an care nu este bisect este 14 martie, cunoscută și sub numele de Ziua Pi.
73 este un emirp. Un emirp (prim ortografiat invers) este un număr prim care are ca rezultat un alt prim atunci când cifrele sale sunt inversate.
Matematicienii Pomerance și Spicer demonstrează că 73 este singurul prim care satisface atât proprietatea produsului, cât și proprietatea oglinzii. https://math.dartmouth.edu/~carlp/sheldon02132019.pdf . De asemenea, ei afirmă că singurele numere prime mai mici de 10^10 care satisfac proprietatea produsului sunt p=17, i=7; p=73, i=21; și p=2475989, i=181440.
Următorul cod R: a. verifică că 73 este singurul Sheldon Prime din primele 10000 de numere prime. b. verifică că 73 în baza doi, 1001001, este un număr palindrom. c. întoarce numărul lui Raj 5318008 cu susul în jos.
#a. 73 este singurul prim Sheldon din primele 10000 de numere prime:
bibliotecă (RcppAlgos)
# Funcție pentru a calcula produsul cifrelor
digit_product <- function(x) {
cifre <- ca.numeric(strsplit(ca.caracter(x), NULL)((1)))
cifre <- cifre(!is.na(cifre))
dacă (lungime (cifre) == 0) return (NA)
prod (cifre)
}
# Funcție de inversare a cifrelor unui număr
cifre_reverse <- function(x) {
ca.numeric(paste(rev(strsplit(ca.caracter(x), NULL)((1))), restrângere = “”))
}
# Funcție pentru a verifica dacă un număr este prim
is_prim <- function(num) {
if (num <= 1) return(FALSE)
if (num == 2) return(TRUE)
if (num %% 2 == 0) return(FALSE)
pentru (i în 3:sqrt(num)) {
if (num %% i == 0) return(FALSE)
}
return (ADEVĂRAT)
}
# Generați primele 10000 de numere prime # oprite aici pentru probleme de memorie și viteză
primes <- primeSieve(104730) # Generează primele 10000 prime; al 10-lea prim este 104729
rezultate <- list()
pentru (i în seq_along(primuri)) {
if (digit_product(primes(i)) == i) { # proprietatea produsului
prim_inversat <- cifre_inversate(primuri(i))
if (is_prime(reversed_prime)) { # proprietate oglindă
index_inversat <- care(primuri == prime_inversate)
if (cifre_inversate(index_inversat) == produs_cifre(prime(i))){
rezultate <- append(rezultate, listă(c(prim = prime(i), index = i, inversat_prim = inversat_prim, inversat_index = inversat_index)))
}
}
}
}
dacă (lungime (rezultate) > 0) {
print(rezultate)
} altfel {
print(„Nu s-a găsit un astfel de prim.”)
}
# b. verificați că 73 în baza doi, 1001001, este un număr palindrom.
x <- 73
v <- bazaOf(x, baza = 2)
w <- rev(v)
dacă (toate(v == w)) {
pisica (v, „este un număr palindrom”)
} altfel {
cat(v, „nu este un număr palindrom”)
}
# c. întoarce numărul lui Raj 5318008 cu susul în jos.
flip_string <- function(x) {
flip <- c('0' = '0', '1' = 'I', '2' = '2', '3' = 'E', '4' = '4', '5' = ' S”, „6” = „9”, „7” = „7”, „8” = „B”, „9” = „6”)
paste(rev(sapply(unlist(strsplit(as.character(x), NULL)), function(ch) flip(ch))), collapse = “”)
}
Raj <- '5318008'
flipped_Raj <- flip_string(Raj)
flipped_Raj
# Sfârşit
