- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在慢慢地解决欧拉项目问题的列表,我已经找到了一个我知道如何解决的问题,但似乎我不能(考虑到我的解决方案的编写方式)。
我正在使用 Common Lisp 来做到这一点,我的脚本已经运行了超过 24 小时(远远超过他们的一分钟目标)。
为了简洁起见,这是我的解决方案(这是一个剧透,但前提是你有一个非常快的处理器):
(defun square? (num)
(if (integerp (sqrt num)) T))
(defun factors (num)
(let ((l '()))
(do ((current 1 (1+ current)))
((> current (/ num current)))
(if (= 0 (mod num current))
(if (= current (/ num current))
(setf l (append l (list current)))
(setf l (append l (list current (/ num current)))))))
(sort l #'< )))
(defun o_2 (n)
(reduce #'+ (mapcar (lambda (x) (* x x)) (factors n))))
(defun sum-divisor-squares (limit)
(loop for i from 1 to limit when (square? (o_2 i)) summing i))
(defun euler-211 ()
(sum-divisor-squares 64000000))
最佳答案
这是一个解决方案,牢记 [Project] Euler 的精神。 [警告:扰流板 .我试图保持提示缓慢,以便您可以仅阅读部分答案并根据需要自行思考。 :)]
当您遇到与数字有关的问题时,一个好的策略(您可能已经从解决 210 Project Euler 问题中了解到)是查看小例子,找到一个模式并证明它。 [根据你对数学的态度,最后一部分可能是可选的;-)]
但是,在这个问题中,查看小例子——对于 n=1,2,3,4,... 可能不会给你任何提示。但是在处理数论问题时,还有另一种“小例子”的含义,您现在可能也知道了——素数是自然数的组成部分,所以从素数开始。
对于素数 p,它的除数只有 1 和 p,所以它的除数的平方和是 1+p2。
对于素数 pk,它的除数只有 1, p, p2, ... pk,所以它的除数的平方和是 1+p+p2+...+pk=(pk+1-1)/(p-1 )。
那是最简单的情况:您只用一个质因数就解决了所有数字的问题。
到目前为止没有什么特别的。现在假设你有一个数 n,它有两个质因数,比如 n=pq。那么它的因数是1、p、q和pq,所以它的除数的平方和是1+p2+q2+p2q2=(1+p2)(1+q2)。
n=paqb 怎么样?它的因数的平方和是多少?
[…………阅读此行下方有危险……………………………………………………………………………………………………………………………………………… ....]
∑0≤c≤a,0≤d≤b(pcqd)2 = ((pa+1-1)/(p-1))((qb+1-1)/(q-1))。
这应该给你提示,关于答案是什么以及如何证明它:n 的除数之和只是其因式分解中每个素数的(答案)的乘积,所以你需要做的就是做的是分解 64000000(即使在一个人的头脑中也很容易做:-))并乘以每个(=两者,因为唯一的素数是 2 和 5)的素数幂的答案。
这解决了 Project Euler 问题;现在道德要从它那里拿走。
这里更普遍的事实是关于乘法函数——自然数上的函数使得 f(mn) = f(m)f(n) 每当 gcd(m,n)=1,即 m 和 n 在常见的。如果您有这样的函数,则该函数在特定数字处的值完全由其素数幂的值决定(您能证明这一点吗?)
稍微困难一点的事实,您可以尝试证明[这并不难],是这样的:如果您有一个乘法函数 f [此处,f(n)=n2] 并且您将函数 F 定义为 F(n) = ∑d 除以 nf(d),(正如这里的问题),那么 F(n) 也是一个乘法函数。
【其实something very beautiful是真的,但现在不要看它,你可能永远不需要它。 :-)]
关于math - Project Euler #211 - 效率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335955/
我正在尝试将欧拉旋转顺序从现有的 xyz 转换为 zxy。谁能帮我做这件事?谢谢。 编辑:我发现这篇非常有用的文章,认为它可以帮助其他人在同一条道路上 - http://knol.google.com
考虑修改后的欧拉问题 #4——“找出最大回文数,它是 100 到 9999 之间的两个数字的乘积。” rev :: Int -> Int rev x = rev' x 0 rev' :: Int ->
例如,我如何在 R 中输入值 e^2? 最佳答案 R 表达式 exp(1) 代表e,并且 exp(2) 代表e^2。 这是有效的,因为 exp 是以 e 为底的求幂函数。 关于R编程: How do
我正在尝试了解 Euler Tour 算法以及为什么它在树遍历中很受欢迎。但是,我看不出 Euler Tour 和树的预序遍历之间的区别。 假设你有一棵树: A / \ B
我一直在尝试对 Euler #22 问题中的这些名称进行排序。我尝试了很多方法来交换字符串。我每次都有问题。有些是随机的符号;有些是随机的。在其他情况下,我在交换时出现了溢出(?)的名字(就像在尝试交
我想为游戏创建一些 physx,我从小例子开始了解它是如何工作的。在此期间我遇到了一些问题,但我在 90% 内解决了它们。 为了创建我的示例,我研究了一些其他示例并创建了我使用的示例:codeflow
/* The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60
我正在研究 Problem 8 of Project Euler我必须从给定的 1000 位数字中找到 13 个连续数字的最大乘积。我将该数字存储在一个文本文件中,然后将其输入到我的源代码中。我的代码
我目前正在尝试解决二体问题,然后我可以升级到更多行星,但它不起作用。它正在输出我不可能的位置。有谁知道是什么原因造成的? 这是我使用的代码: day = 60*60*24 # Constants G
我最近一直在研究毕达哥拉斯三元组和 Euler Bricks并且想知道生成所有这些的最佳方法是什么。 我从更广泛的阅读中知道有 10 个 c n: break
在我当前的 Project Euler problem 5 ,我有一个“有效”的解决方案。它适用于较小的数字(问题中的示例),但不适用于实际问题,因为我在强行使用它,并且程序没有完成。 问题的解释如下
基于标准定义,Eulerian Path是图中的一条路径,它恰好访问每条边一次。 现在,我试图在有向图中找到欧拉路径。我知道欧拉电路的算法。如果一个图有欧拉回路,它就有欧拉路径,这似乎是微不足道的。
我正在研究项目欧拉程序是为了“启蒙”,而不仅仅是解决它们。我已经在 80x80 矩阵上使用动态程序解决了问题 81,但是当我尝试使用统一成本搜索解决它时,我的程序消失在永无止境。我只想知道使用统一成本
我有一个关于 Project Euler 问题和使用循环展开优化的问题。 问题描述:2520是能被1到10的每一个数整除而没有余数的最小数。能被 1 到 20 的所有数字整除的最小正数是多少? 解决方
我正在使用以下行旋转 SCNNode: let rotate = SCNAction.rotateByAngle(CGFloat(M_PI), aroundAxis:SCNVector3Make(0
我想获得更精确的 1/7,但它被截断了。如何在转换有理数时获得更好的精度? >>> str(1.0/7)[:50] '0.142857142857' 最佳答案 Python 有一个用于任意精度计算的内
我正在处理项目 euler 中的问题 401,我在 python 中编写了我的解决方案,但它需要几天时间才能运行,显然我需要加快速度或使用不同的方法。我在 Haskell 中遇到了一个看起来与我的 p
我正在处理 Project Euler 的第四个问题并且遇到了 stackoverflow 异常。我不是在寻求解决问题的帮助,我只是想解释为什么我会收到 stackoverflow 异常。这通常是因为
我已经做了几天 Euler 项目,我不得不承认它很有趣。但是,如果有一些更专注于计算机科学而不是数学的东西,那就太好了。这样的事情对于练习算法和数据结构会很有趣,例如在准备编码面试时。 最佳答案 您可
13195 的质因数是 5、7、13 和 29。 数字 600851475143 的最大质因数是多少? 我自己在Project Euler上解决了这个问题,很慢,后来在某人的github账号上找到了这
我是一名优秀的程序员,十分优秀!