trying out V
parent
727c36e795
commit
920853c7bd
|
@ -0,0 +1,64 @@
|
||||||
|
module euler
|
||||||
|
import math
|
||||||
|
|
||||||
|
pub fn range(start int, end int) []int {
|
||||||
|
mut result := []int
|
||||||
|
for i := start; i <= end; i++ {
|
||||||
|
result << i
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn even(n int) bool {
|
||||||
|
return n % 2 == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn prime(n u64) bool {
|
||||||
|
for i := u64(2); i <= u64(math.sqrt(f64(n))); i++ {
|
||||||
|
if n % i == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn factors(n u64) []u64 {
|
||||||
|
mut factors := []u64
|
||||||
|
for i := u64(2); i <= u64(math.sqrt(f64(n))); i++ {
|
||||||
|
if n % i == 0 && prime(i) {
|
||||||
|
factors << i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return factors
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn max(ints []u64) u64 {
|
||||||
|
mut max := u64(0)
|
||||||
|
for n in ints {
|
||||||
|
if n > max {
|
||||||
|
max = n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return max
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn two_combinations(ints []int) [][]int {
|
||||||
|
mut result := [[]int]
|
||||||
|
result = []
|
||||||
|
for i := 0; i < ints.len; i++ {
|
||||||
|
for j := i + 1; j < ints.len; j++ {
|
||||||
|
result << [[ints[i], ints[j]]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn palindrome(n int) bool {
|
||||||
|
str := n.str()
|
||||||
|
for i := 0; i < str.len; i++ {
|
||||||
|
if str[i] != str[str.len-1-i] {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
fn multiples_of_three_and_five_below(n int) []int {
|
||||||
|
mut nums := []int
|
||||||
|
for i := 3; i < n; i++ {
|
||||||
|
if i % 3 == 0 || i % 5 == 0 {
|
||||||
|
nums << i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nums
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
mut result := 0
|
||||||
|
for n in multiples_of_three_and_five_below(1000) {
|
||||||
|
result += n
|
||||||
|
}
|
||||||
|
println(result)
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
import euler
|
||||||
|
|
||||||
|
fn even_fibonacci_up_to(n int) []int {
|
||||||
|
mut result := []int
|
||||||
|
mut a := 0
|
||||||
|
mut b := 1
|
||||||
|
for a + b < n {
|
||||||
|
if euler.even(a + b) { result << a + b }
|
||||||
|
temp := b
|
||||||
|
b = a + b
|
||||||
|
a = temp
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
mut result := 0
|
||||||
|
for n in even_fibonacci_up_to(4000000) {
|
||||||
|
result += n
|
||||||
|
}
|
||||||
|
println(result)
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
import euler
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println(euler.max(euler.factors(600851475143)))
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
import euler
|
||||||
|
|
||||||
|
fn main()
|
||||||
|
{
|
||||||
|
mut max := 0
|
||||||
|
for combo in euler.two_combinations(euler.range(100, 999)) {
|
||||||
|
product := combo[0] * combo[1]
|
||||||
|
if product > max && euler.palindrome(product) {
|
||||||
|
max = product
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println(max)
|
||||||
|
}
|
Loading…
Reference in New Issue