From 3caa8876e4c1d71cf8973d0d78231f16a0cd5b93 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Fri, 25 May 2018 00:16:47 +0800 Subject: 45, 46, 92 --- euler45.myr | 30 ++++++++++++++++++++++++++++++ euler46.myr | 36 ++++++++++++++++++++++++++++++++++++ euler92.myr | 27 +++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 euler45.myr create mode 100644 euler46.myr create mode 100644 euler92.myr diff --git a/euler45.myr b/euler45.myr new file mode 100644 index 0000000..3bf53fc --- /dev/null +++ b/euler45.myr @@ -0,0 +1,30 @@ +use std + +const main = { + for var n: uint64 = 144; true; n++ + var hn = n * (n * 2 - 1) + /* find pentagonal pn = n(3n-1)/2 */ + /* n' < 2/sqrt(3)*n */ + var i: uint64 = n * 148 / 128 + var pn = i * (i * 3 - 1) / 2 + while pn > hn + i-- + pn = i * (i * 3 - 1) / 2 + ;; + if (pn != hn) + continue + ;; + /* find triangle tn = n(n+1)/2, n'<2n */ + i = n*2 + var tn = i * (i + 1) / 2 + while tn > hn + i-- + tn = i * (i + 1) / 2 + ;; + if (tn != hn) + continue + ;; + std.put("n = {}, h[n] = {}\n", n, hn) + break + ;; +} diff --git a/euler46.myr b/euler46.myr new file mode 100644 index 0000000..0aa1180 --- /dev/null +++ b/euler46.myr @@ -0,0 +1,36 @@ +use std + +const isprime = {x + if (x < 1) + -> false + ;; + for var i = 2; i * i <= x; i++ + if (x % i ==0) + -> false + ;; + ;; + -> true +} + +const main = { + for var i = 9; true; i+=2 + if (isprime(i)) + continue + ;; + var found = true + for var j = 1; true; j++ + var t = i - j * j * 2 + if t <= 0 + break + ;; + if (isprime(t)) + found = false + break + ;; + ;; + if found + std.put("{}\n", i) + break + ;; + ;; +} diff --git a/euler92.myr b/euler92.myr new file mode 100644 index 0000000..3092405 --- /dev/null +++ b/euler92.myr @@ -0,0 +1,27 @@ +use std + +const goto89 = {x + const sqrsum = {y + var sum = 0 + while y > 0 + var b = y % 10 + y = y / 10 + sum += b * b + ;; + -> sum + } + while x != 1 && x != 89 + x = sqrsum(x) + ;; + -> x == 89 +} + +const main = { + var n = 0 + for var i = 1; i < 10_000_000; i++ + if goto89(i) + n++ + ;; + ;; + std.put("{}\n", n) +} -- cgit v1.2.3