1383a3f62c
Schöner ist, wenn man das Programm direkt auf der Kommandozeile aufrufen kann, damit man als unwissender nicht erst rätseln muss, wie man es ausführt. Für das Programm ist das Paket numbers installiert. Da dieses mindestens bei Debian nicht über das Paketsystem verfügbar ist, soll die kleine Anleitung helfen, wie man es installiert.
29 lines
741 B
R
Executable file
29 lines
741 B
R
Executable file
#!/usr/bin/Rscript
|
|
|
|
# Falls das Paket numbers nicht installiert ist:
|
|
# 1. R_LIBS=$PWD/r-libs R -e "install.packages('numbers', dependencies=TRUE, repos='http://cran.r-project.org')"
|
|
# 2. R_LIBS=$PWD/r-libs ./pikatech_euler87.R
|
|
library(numbers)
|
|
|
|
####
|
|
# limit: Obere Grenze für die Summe der Primzahltripel
|
|
#
|
|
# Gibt die Anzahl der einmaligen Primzahltripel
|
|
# bis zu einer oberen Grenze zurück.
|
|
####
|
|
euler87 <- function(limit) {
|
|
primes <- Primes(1, ceiling(limit^(1/2)))
|
|
|
|
x2 <- primes^2
|
|
x3 <- primes^3
|
|
x4 <- primes^4
|
|
x2 <- x2[x2 < limit]
|
|
x3 <- x3[x3 < limit]
|
|
x4 <- x4[x4 < limit]
|
|
|
|
x <- expand.grid(x2, x3, x4)
|
|
xSums <- rowSums(x)
|
|
length(unique(xSums[xSums < limit]))
|
|
}
|
|
|
|
system.time(print(euler87(5e7)))
|