问题描述:
The sequence of triangle numbers is generated by adding the natural numbers. So the 7thtriangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
Let us list the factors of the first seven triangle numbers:
1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28
We can see that 28 is the first triangle number to have over five divisors.
What is the value of the first triangle number to have over five hundred divisors?
解决方案:
(ns euler-problem-12.core
(:use [clojure.contrib.math]))
(defn prime?
[num]
(every? #(or (> (rem num %) 0) (= num %)) (apply list (range 2 (inc (ceil (sqrt num)))))))
(defn next-prime
[num]
(loop [x (inc num)]
(if (prime? x)
x
(recur (inc x)))))
(defn prime-factors
[n]
(loop
[curent-n n, p 2, c [ ]]
(if (prime? curent-n)
(conj c curent-n)
(if (= 0 (rem curent-n p))
(recur (/ curent-n p) p (conj c p))
(recur curent-n (next-prime p) c)))))
(defn factors-count
[vprime-factors]
(loop
[last-factor nil, factors vprime-factors, counts [1], c-count 2]
(if (empty? factors)
(apply * counts)
(if (= last-factor (first factors))
(recur last-factor (rest factors) counts (inc c-count))
(recur (first factors) (rest factors) (conj counts c-count) 2)))))
(defn first-triangle-number-500-factors
[]
(loop
[n 2, t-n 1]
(if (> (factors-count (prime-factors (+ t-n n))) 500)
(+ t-n n)
(recur (inc n) (+ t-n n)))))
(first-triangle-number-500-factors)
答案:
76576500
分享到:
相关推荐
该存储库是使用Clojure解决Euler问题的支架。 它以有组织的结构生成规格和解决方案存根,从而使生活稍微好一些。 安装 如果尚未安装,则将其添加到您的路径中。 签出这个项目: $ git clone git@github....
Clojure骇客解决了Euler项目的问题。 目的是用惯用的Clojure编写功能解决方案。 用法 大多数解决方案都是完整的,并且完全独立地包含在具有“解决”功能的唯一名称空间中。 有些正在“进行中”。 执照 版权所有:...
欧拉计划 问题1-2、4、6、8-10、12、14、21、24-26、32、34、36、39、41、46、49、52、55-58、62、65的Clojure解决方案70-74、87、92、97、124、173-174、179、187、214运行解决方案使用以下命令行运行解决方案: ...
函数式编程之Clojure.pdf [2015] Clojure for the Brave and True - Learn the Ultimate Language and Become a Better Programmer.(Daniel Higginbotham).[1593275919].rar [2015] Clojure Web Development ...
[2009] Programming Clojure.(Stuart Halloway).[1934356336].pdf [2010] Functional Programming with Clojure - Simple Concurrency on the JVM.(Tim Berglund, Matthew McCullough).[193650202X].pdf [2010] ...
这本书不仅讲解了Clojure的基本语法和API,而且通过实例展示了如何使用Clojure解决实际问题。Halloway详细阐述了Clojure的REPL(Read-Eval-Print Loop)工作原理,以及如何利用它进行开发和测试。他还讨论了Clojure...
欧拉解决Clojure中的Euler项目问题的方法。 持续的爱好。执照版权所有:copyright:2012-2015 Dave Yarwood 在Eclipse Public License 1.0版下分发。
Clojure的设计目标是提供一个高效、并发、可移植的环境,适合解决现代软件开发中的复杂问题。在这个“Clojure编程乐趣”中,我们将深入探讨Clojure的核心概念和特性。 首先,Clojure强调函数式编程,这意味着程序被...
这种紧密集成意味着开发者可以在Clojure项目中使用Java类库提供的强大功能,而无需进行额外的转换或封装。 - **Performance**:虽然Clojure是一种动态语言,但它仍然能够在性能敏感的应用场景中表现出色。通过JIT...
使用Clojure编程,随着程序的增长,并不会变得更复杂难以理解,反而会变得更简单、表达性更强。Clojure鼓励开发者尝试在其他语言中过于复杂而通常不会尝试的事情,例如并发编程、不可变性和惰性数据结构。因为...
读者将通过实例学习如何运用Clojure解决实际问题,提升自己的编程技巧。 总的来说,《Programming Clojure 第三版》是一本全方位的Clojure指南,适合初学者和经验丰富的开发者。它涵盖了Clojure的所有重要方面,...
### Clojure入门教程知识...- 对于希望深入了解函数式编程或在JVM上寻找高效编程解决方案的开发者而言,Clojure是一个值得探索的选择。通过实践和社区的支持,学习者可以快速掌握Clojure的核心概念并应用于实际项目中。
- **数据结构和序列操作**:解释 Clojure 中常用的数据结构,如列表、向量、集合和映射,并展示如何使用这些结构进行数据处理。 - **函数式编程**:探讨 Clojure 如何支持纯函数式编程风格,包括高阶函数、闭包和...
Lacinia将Clojure的这些优点带入了GraphQL领域,允许开发者用熟悉的Clojure语法定义GraphQL类型、字段和解析器。这种结合使得开发者可以利用Clojure的宏系统来创建复杂的GraphQL schema,同时保持代码的可读性和可...
4. **Clojure 1.4.0 Alpha2**: "clojure-clojure-clojure-1.4.0-alpha2-12-gec59eba.zip"是Clojure 1.4.0的一个早期预览版本。这个版本可能包含了1.3.0之后的进一步改进和新功能,对于关注Clojure演进的开发者来说,...
Clear, practical Clojure for the professional programmer Professional Clojure is the experienced developer's guide to functional programming using the Clojure language. Designed specifically to meet ...