# install.packages("primes")
library(primes)
# Conjecture 1: There exist prime numbers p and q for which p - q = 1000.
q <- generate_primes(1, 100)
q
## [1] 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
p <- q + 1000
p
## [1] 1002 1003 1005 1007 1011 1013 1017 1019 1023 1029 1031 1037 1041 1043 1047
## [16] 1053 1059 1061 1067 1071 1073 1079 1083 1089 1097
test <- is_prime(p)
test
## [1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] TRUE
df <- data.frame(q, p, test)
df
## q p test
## 1 2 1002 FALSE
## 2 3 1003 FALSE
## 3 5 1005 FALSE
## 4 7 1007 FALSE
## 5 11 1011 FALSE
## 6 13 1013 TRUE
## 7 17 1017 FALSE
## 8 19 1019 TRUE
## 9 23 1023 FALSE
## 10 29 1029 FALSE
## 11 31 1031 TRUE
## 12 37 1037 FALSE
## 13 41 1041 FALSE
## 14 43 1043 FALSE
## 15 47 1047 FALSE
## 16 53 1053 FALSE
## 17 59 1059 FALSE
## 18 61 1061 TRUE
## 19 67 1067 FALSE
## 20 71 1071 FALSE
## 21 73 1073 FALSE
## 22 79 1079 FALSE
## 23 83 1083 FALSE
## 24 89 1089 FALSE
## 25 97 1097 TRUE
# Conjecture 1 is TRUE.
# Conjecture 2: The inequality 2^x >= x+1 is true for all real numbers x > 0.
x <- 1:100
x
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [91] 91 92 93 94 95 96 97 98 99 100
power <- 2^x
power
## [1] 2.000000e+00 4.000000e+00 8.000000e+00 1.600000e+01 3.200000e+01
## [6] 6.400000e+01 1.280000e+02 2.560000e+02 5.120000e+02 1.024000e+03
## [11] 2.048000e+03 4.096000e+03 8.192000e+03 1.638400e+04 3.276800e+04
## [16] 6.553600e+04 1.310720e+05 2.621440e+05 5.242880e+05 1.048576e+06
## [21] 2.097152e+06 4.194304e+06 8.388608e+06 1.677722e+07 3.355443e+07
## [26] 6.710886e+07 1.342177e+08 2.684355e+08 5.368709e+08 1.073742e+09
## [31] 2.147484e+09 4.294967e+09 8.589935e+09 1.717987e+10 3.435974e+10
## [36] 6.871948e+10 1.374390e+11 2.748779e+11 5.497558e+11 1.099512e+12
## [41] 2.199023e+12 4.398047e+12 8.796093e+12 1.759219e+13 3.518437e+13
## [46] 7.036874e+13 1.407375e+14 2.814750e+14 5.629500e+14 1.125900e+15
## [51] 2.251800e+15 4.503600e+15 9.007199e+15 1.801440e+16 3.602880e+16
## [56] 7.205759e+16 1.441152e+17 2.882304e+17 5.764608e+17 1.152922e+18
## [61] 2.305843e+18 4.611686e+18 9.223372e+18 1.844674e+19 3.689349e+19
## [66] 7.378698e+19 1.475740e+20 2.951479e+20 5.902958e+20 1.180592e+21
## [71] 2.361183e+21 4.722366e+21 9.444733e+21 1.888947e+22 3.777893e+22
## [76] 7.555786e+22 1.511157e+23 3.022315e+23 6.044629e+23 1.208926e+24
## [81] 2.417852e+24 4.835703e+24 9.671407e+24 1.934281e+25 3.868563e+25
## [86] 7.737125e+25 1.547425e+26 3.094850e+26 6.189700e+26 1.237940e+27
## [91] 2.475880e+27 4.951760e+27 9.903520e+27 1.980704e+28 3.961408e+28
## [96] 7.922816e+28 1.584563e+29 3.169127e+29 6.338253e+29 1.267651e+30
test <- power >= x + 1
test
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [76] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [91] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
df <- data.frame(x,power,test)
df
## x power test
## 1 1 2.000000e+00 TRUE
## 2 2 4.000000e+00 TRUE
## 3 3 8.000000e+00 TRUE
## 4 4 1.600000e+01 TRUE
## 5 5 3.200000e+01 TRUE
## 6 6 6.400000e+01 TRUE
## 7 7 1.280000e+02 TRUE
## 8 8 2.560000e+02 TRUE
## 9 9 5.120000e+02 TRUE
## 10 10 1.024000e+03 TRUE
## 11 11 2.048000e+03 TRUE
## 12 12 4.096000e+03 TRUE
## 13 13 8.192000e+03 TRUE
## 14 14 1.638400e+04 TRUE
## 15 15 3.276800e+04 TRUE
## 16 16 6.553600e+04 TRUE
## 17 17 1.310720e+05 TRUE
## 18 18 2.621440e+05 TRUE
## 19 19 5.242880e+05 TRUE
## 20 20 1.048576e+06 TRUE
## 21 21 2.097152e+06 TRUE
## 22 22 4.194304e+06 TRUE
## 23 23 8.388608e+06 TRUE
## 24 24 1.677722e+07 TRUE
## 25 25 3.355443e+07 TRUE
## 26 26 6.710886e+07 TRUE
## 27 27 1.342177e+08 TRUE
## 28 28 2.684355e+08 TRUE
## 29 29 5.368709e+08 TRUE
## 30 30 1.073742e+09 TRUE
## 31 31 2.147484e+09 TRUE
## 32 32 4.294967e+09 TRUE
## 33 33 8.589935e+09 TRUE
## 34 34 1.717987e+10 TRUE
## 35 35 3.435974e+10 TRUE
## 36 36 6.871948e+10 TRUE
## 37 37 1.374390e+11 TRUE
## 38 38 2.748779e+11 TRUE
## 39 39 5.497558e+11 TRUE
## 40 40 1.099512e+12 TRUE
## 41 41 2.199023e+12 TRUE
## 42 42 4.398047e+12 TRUE
## 43 43 8.796093e+12 TRUE
## 44 44 1.759219e+13 TRUE
## 45 45 3.518437e+13 TRUE
## 46 46 7.036874e+13 TRUE
## 47 47 1.407375e+14 TRUE
## 48 48 2.814750e+14 TRUE
## 49 49 5.629500e+14 TRUE
## 50 50 1.125900e+15 TRUE
## 51 51 2.251800e+15 TRUE
## 52 52 4.503600e+15 TRUE
## 53 53 9.007199e+15 TRUE
## 54 54 1.801440e+16 TRUE
## 55 55 3.602880e+16 TRUE
## 56 56 7.205759e+16 TRUE
## 57 57 1.441152e+17 TRUE
## 58 58 2.882304e+17 TRUE
## 59 59 5.764608e+17 TRUE
## 60 60 1.152922e+18 TRUE
## 61 61 2.305843e+18 TRUE
## 62 62 4.611686e+18 TRUE
## 63 63 9.223372e+18 TRUE
## 64 64 1.844674e+19 TRUE
## 65 65 3.689349e+19 TRUE
## 66 66 7.378698e+19 TRUE
## 67 67 1.475740e+20 TRUE
## 68 68 2.951479e+20 TRUE
## 69 69 5.902958e+20 TRUE
## 70 70 1.180592e+21 TRUE
## 71 71 2.361183e+21 TRUE
## 72 72 4.722366e+21 TRUE
## 73 73 9.444733e+21 TRUE
## 74 74 1.888947e+22 TRUE
## 75 75 3.777893e+22 TRUE
## 76 76 7.555786e+22 TRUE
## 77 77 1.511157e+23 TRUE
## 78 78 3.022315e+23 TRUE
## 79 79 6.044629e+23 TRUE
## 80 80 1.208926e+24 TRUE
## 81 81 2.417852e+24 TRUE
## 82 82 4.835703e+24 TRUE
## 83 83 9.671407e+24 TRUE
## 84 84 1.934281e+25 TRUE
## 85 85 3.868563e+25 TRUE
## 86 86 7.737125e+25 TRUE
## 87 87 1.547425e+26 TRUE
## 88 88 3.094850e+26 TRUE
## 89 89 6.189700e+26 TRUE
## 90 90 1.237940e+27 TRUE
## 91 91 2.475880e+27 TRUE
## 92 92 4.951760e+27 TRUE
## 93 93 9.903520e+27 TRUE
## 94 94 1.980704e+28 TRUE
## 95 95 3.961408e+28 TRUE
## 96 96 7.922816e+28 TRUE
## 97 97 1.584563e+29 TRUE
## 98 98 3.169127e+29 TRUE
## 99 99 6.338253e+29 TRUE
## 100 100 1.267651e+30 TRUE
# Conjecture 2 is TRUE.
# Conjecture 3: If n is prime, then 2^n - 1 is prime.
n <- generate_primes(1,100)
n
## [1] 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
value <- 2^n - 1
value
## [1] 3.000000e+00 7.000000e+00 3.100000e+01 1.270000e+02 2.047000e+03
## [6] 8.191000e+03 1.310710e+05 5.242870e+05 8.388607e+06 5.368709e+08
## [11] 2.147484e+09 1.374390e+11 2.199023e+12 8.796093e+12 1.407375e+14
## [16] 9.007199e+15 5.764608e+17 2.305843e+18 1.475740e+20 2.361183e+21
## [21] 9.444733e+21 6.044629e+23 9.671407e+24 6.189700e+26 1.584563e+29
test <- is_prime(value)
## Warning in is_prime(value): NAs introduced by coercion to integer range
test
## [1] TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE
df <- data.frame(n, value, test)
df
## n value test
## 1 2 3.000000e+00 TRUE
## 2 3 7.000000e+00 TRUE
## 3 5 3.100000e+01 TRUE
## 4 7 1.270000e+02 TRUE
## 5 11 2.047000e+03 FALSE
## 6 13 8.191000e+03 TRUE
## 7 17 1.310710e+05 TRUE
## 8 19 5.242870e+05 TRUE
## 9 23 8.388607e+06 FALSE
## 10 29 5.368709e+08 FALSE
## 11 31 2.147484e+09 TRUE
## 12 37 1.374390e+11 FALSE
## 13 41 2.199023e+12 FALSE
## 14 43 8.796093e+12 FALSE
## 15 47 1.407375e+14 FALSE
## 16 53 9.007199e+15 FALSE
## 17 59 5.764608e+17 FALSE
## 18 61 2.305843e+18 FALSE
## 19 67 1.475740e+20 FALSE
## 20 71 2.361183e+21 FALSE
## 21 73 9.444733e+21 FALSE
## 22 79 6.044629e+23 FALSE
## 23 83 9.671407e+24 FALSE
## 24 89 6.189700e+26 FALSE
## 25 97 1.584563e+29 FALSE
#Conjecture 3 is FALSE.
#Conjecture 4: If n is a natural number, then 1^2 + 2^2 + ... + n^2 = n*(n+1)*(2*n+1)/6.
sum_squares <- function(n) {
val <- 0
for (i in 1:n) {
val <- val + i^2
}
val
}
sum_squares(3)
## [1] 14
x <- 1:100
y <- sapply(x, sum_squares)
func <- function(n) {
return (n*(n+1)*(2*n+1)/6)
}
z <- vector("numeric", length(x))
for (i in seq_along(x)) {
z[i] <- func(x[i])
}
z
## [1] 1 5 14 30 55 91 140 204 285 385
## [11] 506 650 819 1015 1240 1496 1785 2109 2470 2870
## [21] 3311 3795 4324 4900 5525 6201 6930 7714 8555 9455
## [31] 10416 11440 12529 13685 14910 16206 17575 19019 20540 22140
## [41] 23821 25585 27434 29370 31395 33511 35720 38024 40425 42925
## [51] 45526 48230 51039 53955 56980 60116 63365 66729 70210 73810
## [61] 77531 81375 85344 89440 93665 98021 102510 107134 111895 116795
## [71] 121836 127020 132349 137825 143450 149226 155155 161239 167480 173880
## [81] 180441 187165 194054 201110 208335 215731 223300 231044 238965 247065
## [91] 255346 263810 272459 281295 290320 299536 308945 318549 328350 338350
z == y
## [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [76] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [91] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# Conjecture 4 is TRUE.