`
hotcharm
  • 浏览: 17115 次
  • 性别: Icon_minigender_1
  • 来自: 义乌
最近访客 更多访客>>
社区版块
存档分类
最新评论

用clojure解决euler problem 12

 
阅读更多

问题描述:

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


分享到:
评论

相关推荐

    欧拉公式求圆周率的matlab代码-euler:我对欧拉计画的解决方案(clojure)

    该存储库是使用Clojure解决Euler问题的支架。 它以有组织的结构生成规格和解决方案存根,从而使生活稍微好一些。 安装 如果尚未安装,则将其添加到您的路径中。 签出这个项目: $ git clone git@github....

    欧拉公式求圆周率的matlab代码-project-euler:Clojure解决Euler项目问题​​的方法

    Clojure骇客解决了Euler项目的问题。 目的是用惯用的Clojure编写功能解决方案。 用法 大多数解决方案都是完整的,并且完全独立地包含在具有“解决”功能的唯一名称空间中。 有些正在“进行中”。 执照 版权所有:...

    project-euler-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电子书合集_12本3

    函数式编程之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 ...

    Clojure电子书合集1(12本)

    [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电子书

    这本书不仅讲解了Clojure的基本语法和API,而且通过实例展示了如何使用Clojure解决实际问题。Halloway详细阐述了Clojure的REPL(Read-Eval-Print Loop)工作原理,以及如何利用它进行开发和测试。他还讨论了Clojure...

    euler:Clojure中的Project Euler解决方案

    欧拉解决Clojure中的Euler项目问题​​的方法。 持续的爱好。执照版权所有:copyright:2012-2015 Dave Yarwood 在Eclipse Public License 1.0版下分发。

    Clojure编程乐趣]+clojure_programming.pdf

    Clojure的设计目标是提供一个高效、并发、可移植的环境,适合解决现代软件开发中的复杂问题。在这个“Clojure编程乐趣”中,我们将深入探讨Clojure的核心概念和特性。 首先,Clojure强调函数式编程,这意味着程序被...

    Programming Clojure 英文电子版

    这种紧密集成意味着开发者可以在Clojure项目中使用Java类库提供的强大功能,而无需进行额外的转换或封装。 - **Performance**:虽然Clojure是一种动态语言,但它仍然能够在性能敏感的应用场景中表现出色。通过JIT...

    Practical Clojure.pdf

    使用Clojure编程,随着程序的增长,并不会变得更复杂难以理解,反而会变得更简单、表达性更强。Clojure鼓励开发者尝试在其他语言中过于复杂而通常不会尝试的事情,例如并发编程、不可变性和惰性数据结构。因为...

    programming-clojure-3rd

    读者将通过实例学习如何运用Clojure解决实际问题,提升自己的编程技巧。 总的来说,《Programming Clojure 第三版》是一本全方位的Clojure指南,适合初学者和经验丰富的开发者。它涵盖了Clojure的所有重要方面,...

    Clojure入门教程- Clojure – Functional Programming for the JVM中文版

    ### Clojure入门教程知识...- 对于希望深入了解函数式编程或在JVM上寻找高效编程解决方案的开发者而言,Clojure是一个值得探索的选择。通过实践和社区的支持,学习者可以快速掌握Clojure的核心概念并应用于实际项目中。

    Clojure Data Analysis Cookbook

    - **数据结构和序列操作**:解释 Clojure 中常用的数据结构,如列表、向量、集合和映射,并展示如何使用这些结构进行数据处理。 - **函数式编程**:探讨 Clojure 如何支持纯函数式编程风格,包括高阶函数、闭包和...

    Lacinia纯Clojure实现的GraphQL

    Lacinia将Clojure的这些优点带入了GraphQL领域,允许开发者用熟悉的Clojure语法定义GraphQL类型、字段和解析器。这种结合使得开发者可以利用Clojure的宏系统来创建复杂的GraphQL schema,同时保持代码的可读性和可...

    clojure1.3.0及资料

    4. **Clojure 1.4.0 Alpha2**: "clojure-clojure-clojure-1.4.0-alpha2-12-gec59eba.zip"是Clojure 1.4.0的一个早期预览版本。这个版本可能包含了1.3.0之后的进一步改进和新功能,对于关注Clojure演进的开发者来说,...

    Professional.Clojure.1119267277

    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 ...

Global site tag (gtag.js) - Google Analytics