【发布时间】:2017-08-06 05:00:51
【问题描述】:
这是一个欧拉计划问题 23:非丰富的和。
完美数是一个数,它的真因数之和正好等于这个数。例如,28 的因数之和为 1 + 2 + 4 + 7 + 14 = 28,这意味着 28 是一个完美数。
如果一个数 n 的真因数之和小于 n 则称为不足数,如果该数之和超过 n 则称为丰富数。
由于12是最小的丰富数,1 + 2 + 3 + 4 + 6 = 16,所以可以写成两个丰富数之和的最小数是24。通过数学分析,可以证明所有大于 28123 的整数可以写成两个丰富数之和。但是,即使已知不能表示为两个丰富数之和的最大数小于此上限,也无法通过分析进一步降低此上限。
找出所有不能写成两个丰富数之和的正整数之和。
这里sumOfPD 函数返回适当除数的总和。
我写了以下代码,但不起作用。
sumOfPD :: Integral a => a -> a
sumOfPD x = sum([y | y <- [1..x], rem x y == 0]) - x
main = do
print (sum ([x + y | x <- [1..], y <- [1..], x + y < 28124, sumOfPD x <= x, sumOfPD y <= y]))
我是 Haskell 的新手。请帮我解决错误。
【问题讨论】:
-
请在您的问题正文中输入文本。许多人和所有搜索引擎都无法访问文本图像。
-
如果您遇到错误发布其文本(post,post);如果您遇到错误发布其文本(帖子,帖子);如果您遇到错误,并且没有更清楚的说明,如果您遇到错误,请发布其文本。始终在您的问题中添加错误消息。否则就像要求没有代码的代码审查一样。
-
请添加其余必要的文字并删除图像,这将是不必要的。