diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-05-25 00:16:47 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-05-25 01:05:11 +0800 |
commit | 3caa8876e4c1d71cf8973d0d78231f16a0cd5b93 (patch) | |
tree | 37e104696c6aeb589b0771bb2143f1fec715d086 /euler45.myr | |
parent | 1eefd58ca4fdb5d2f51f657bfd70c9a89a4707db (diff) | |
download | project_euler-3caa8876e4c1d71cf8973d0d78231f16a0cd5b93.tar.xz |
45, 46, 92
Diffstat (limited to 'euler45.myr')
-rw-r--r-- | euler45.myr | 30 |
1 files changed, 30 insertions, 0 deletions
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 + ;; +} |