Left factorials: Difference between revisions
Content added Content deleted
No edit summary |
m (Add R solution) |
||
Line 2,462: | Line 2,462: | ||
Digit counts for terms 1k through 10k (inclusive) by k: |
Digit counts for terms 1k through 10k (inclusive) by k: |
||
[2565, 5733, 9128, 12670, 16322, 20062, 23875, 27749, 31678, 35656]</pre> |
[2565, 5733, 9128, 12670, 16322, 20062, 23875, 27749, 31678, 35656]</pre> |
||
=={{header|R}}== |
|||
<lang rsplus> |
|||
library(gmp) |
|||
left_factorial <- function(n) { |
|||
if (n == 0) return(0) |
|||
result <- as.bigz(0) |
|||
adder <- as.bigz(1) |
|||
for (k in 1:n) { |
|||
result <- result + adder |
|||
adder <- adder * k |
|||
} |
|||
result |
|||
} |
|||
digit_count <- function(n) { |
|||
nchar(as.character(n)) |
|||
} |
|||
for (n in 0:10) { |
|||
cat("!",n," = ",sep = "") |
|||
cat(as.character(left_factorial(n))) |
|||
cat("\n") |
|||
} |
|||
for (n in seq(20,110,10)) { |
|||
cat("!",n," = ",sep = "") |
|||
cat(as.character(left_factorial(n))) |
|||
cat("\n") |
|||
} |
|||
for (n in seq(1000,10000,1000)) { |
|||
cat("!",n," has ",digit_count(left_factorial(n))," digits\n", sep = "") |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
!0 = 0 |
|||
!1 = 1 |
|||
!2 = 2 |
|||
!3 = 4 |
|||
!4 = 10 |
|||
!5 = 34 |
|||
!6 = 154 |
|||
!7 = 874 |
|||
!8 = 5914 |
|||
!9 = 46234 |
|||
!10 = 409114 |
|||
!20 = 128425485935180314 |
|||
!30 = 9157958657951075573395300940314 |
|||
!40 = 20935051082417771847631371547939998232420940314 |
|||
!50 = 620960027832821612639424806694551108812720525606160920420940314 |
|||
!60 = 141074930726669571000530822087000522211656242116439949000980378746128920420940314 |
|||
!70 = 173639511802987526699717162409282876065556519849603157850853034644815111221599509216528920420940314 |
|||
!80 = 906089587987695346534516804650290637694024830011956365184327674619752094289696314882008531991840922336528920420940314 |
|||
!90 = 16695570072624210767034167688394623360733515163575864136345910335924039962404869510225723072235842668787507993136908442336528920420940314 |
|||
!100 = 942786239765826579160595268206839381354754349601050974345395410407078230249590414458830117442618180732911203520208889371641659121356556442336528920420940314 |
|||
!110 = 145722981061585297004706728001906071948635199234860720988658042536179281328615541936083296163475394237524337422204397431927131629058103519228197429698252556442336528920420940314 |
|||
!1000 has 2565 digits |
|||
!2000 has 5733 digits |
|||
!3000 has 9128 digits |
|||
!4000 has 12670 digits |
|||
!5000 has 16322 digits |
|||
!6000 has 20062 digits |
|||
!7000 has 23875 digits |
|||
!8000 has 27749 digits |
|||
!9000 has 31678 digits |
|||
!10000 has 35656 digits |
|||
</pre> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |