无心人 发表于 2009-2-26 10:05:40

上面的函数,在大于等于10时多1
实际用要减1

mathe 发表于 2009-2-26 10:14:25

原帖由 无心人 于 2009-2-26 09:58 发表 http://bbs.emath.ac.cn/images/common/back.gif
Haskell
:m + List Char

Prelude List Char> let prodd n = product \$ map (\x -> (ord x) - (ord '0')) \$ filter (/='0') \$ sort \$ show (n)
Prelude List Char> prodd 12
2
Prelude List Char> prodd 1 ...
这里\$相当于.的作用吗?这里这个sort是怎么用的?
还有ord函数我好像也不能用,是不是要import Char?
我也写一个:
let prodd n = foldr1 (*)

mathe 发表于 2009-2-26 10:15:36

HasKell里面有没有提供判断素数的函数?

无心人 发表于 2009-2-26 10:17:55

有外部库

无心人 发表于 2009-2-26 10:19:10

http://haskell.5d6d.com/thread-28-1-1.html

无心人 发表于 2009-2-26 10:19:34

ord在Char里

无心人 发表于 2009-2-26 10:21:09

\$和.不一样啊
.是函数复合,是高阶函数
\$属于输入, 右面的数据输出输入到左面的输入

无心人 发表于 2009-2-26 10:21:50

最新的结果我在4#里写出来了
算到了8

无心人 发表于 2009-2-26 10:27:07

sort list等于排序
这个函数不用也可以

无心人 发表于 2009-2-26 10:28:32

按你的思路是
let prodd n = product [ ord(c) - ord('0') | c <- show n, c /= '0'];
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 数字乘积