检查给定的是素数还是未使用clojure (defn素数[x] (如果有两条评论: range返回一个seq,您正试图将其应用于(mod x…。我认为您缺少一个映射 如果仔细想想,从if返回true和false,没有实际意义(提示,尝试查看函数not的行为)
您应该再次尝试,并向我们更新您的想法!两条评论:检查给定的是素数还是未使用clojure (defn素数[x] (如果有两条评论: range返回一个seq,您正试图将其应用于(mod x…。我认为您缺少一个映射 如果仔细想想,从if返回true和false,没有实际意义(提示,尝试查看函数not的行为),clojure,Clojure,您应该再次尝试,并向我们更新您的想法!两条评论: range返回一个seq,您正试图将其应用于(mod x…。我认为您缺少一个映射 如果仔细想想,从if返回true和false,没有实际意义(提示,尝试查看函数not的行为) 你应该再做一次尝试,并向我们更新你的想法!我认为问题稍微不同。我们不想尝试大于我们想要知道的数的平方根的值是否为素数。原因在这里解释。(基本上,如果x=a*b,那么a和b都不能大于平方根) 所以我们正在建立的序列,是平方根 (defn prime [x] (if (
range
返回一个seq,您正试图将其应用于(mod x…
。我认为您缺少一个映射
true
和false
,没有实际意义(提示,尝试查看函数not
的行为)你应该再做一次尝试,并向我们更新你的想法!我认为问题稍微不同。我们不想尝试大于我们想要知道的数的平方根的值是否为素数。原因在这里解释。(基本上,如果x=a*b,那么a和b都不能大于平方根) 所以我们正在建立的序列,是平方根
(defn prime [x]
(if (#(<= % (Math/sqrt x)) (first (filter zero? (mod x (range 2 (inc x))))))
false
true))
最后,我们对除数进行过滤:
(defn root-1 [x]
(inc (long (Math/sqrt x))))
(defn range-1 [x]
(range 2 (root-1 x)))
特别是,我们可以在第一个问题上停下来,然后过滤懒惰,这很好地得出:
(defn filter-1 [x]
(filter #(zero? (rem x %))
(range-1 x)))
我们可以尝试:
(defn is-prime [x]
(nil? (first (filter-1 x))))
我认为问题略有不同。我们不想尝试大于我们想知道的数的平方根的值是否为素数。原因是这样解释的。(基本上,如果x=a*b,那么a和b都不能大于平方根) 所以我们正在建立的序列,是平方根
(defn prime [x]
(if (#(<= % (Math/sqrt x)) (first (filter zero? (mod x (range 2 (inc x))))))
false
true))
最后,我们对除数进行过滤:
(defn root-1 [x]
(inc (long (Math/sqrt x))))
(defn range-1 [x]
(range 2 (root-1 x)))
特别是,我们可以在第一个问题上停下来,然后过滤懒惰,这很好地得出:
(defn filter-1 [x]
(filter #(zero? (rem x %))
(range-1 x)))
我们可以尝试:
(defn is-prime [x]
(nil? (first (filter-1 x))))
解释你的食谱:
x
的所有除数x
的平方根,则x
不是质数- 周围的
表单是冗余的if
- 过滤函数错误。它应该包含
和zero?
mod x
- 不需要构造和应用匿名函数,只需 直接应用测试
- 素数
的第一个除数是x
本身。不需要 用平方根乱搞x
- 范围应该是从2到
的平方根。然后是x
第一个除数的值表示素数nil
- 过滤
的所有除数x
- 选择其中的第一个
- 如果小于或等于
的平方根,则x
不是质数x
给定的代码存在以下问题:
- 周围的
表单是冗余的if
- 过滤函数错误。它应该包含
和zero?
mod x
- 不需要构造和应用匿名函数,只需 直接应用测试
- 素数
的第一个除数是x
本身。不需要 用平方根乱搞x
- 范围应该是从2到
的平方根。然后是x
第一个除数的值表示素数nil
- 解释你的食谱:
(is-prime 10) ; false
(is-prime 11) ; true
快速检查数字是否为素数:
(is-prime 10) ; false
(is-prime 11) ; true
在你的问题中发布错误会有帮助在你的问题中发布错误会有帮助