Clojure 费马小定理
我想为费马的小定理写一个clojure函数 我正在分解这个问题,并试图一步一步地完成它 我想写的第一件事是回答这部分问题的代码: 给定一个数字n,选择一个小于n的随机数a。计算^n模n的余数 以下是我迄今为止编写的代码:Clojure 费马小定理,clojure,Clojure,我想为费马的小定理写一个clojure函数 我正在分解这个问题,并试图一步一步地完成它 我想写的第一件事是回答这部分问题的代码: 给定一个数字n,选择一个小于n的随机数a。计算^n模n的余数 以下是我迄今为止编写的代码: (defn exp [a n] (reduce * (repeat n a))) (mod (exp 3 5) 5) 这似乎工作正常,可以测试素数。但是我现在想把它放在一个函数中,得到一个随机选择的函数。在clojure中有没有一种简单的获取随机整数的方法 非常感谢
(defn exp [a n]
(reduce * (repeat n a)))
(mod (exp 3 5) 5)
这似乎工作正常,可以测试素数。但是我现在想把它放在一个函数中,得到一个随机选择的函数。在clojure中有没有一种简单的获取随机整数的方法
非常感谢您的帮助。您可能需要以下功能:
(defn rand-mod [n]
(mod (exp (rand-int n) n) n))
您可能需要以下功能:
(defn rand-mod [n]
(mod (exp (rand-int n) n) n))
您可以创建一个函数,随机选择一个数字,使用exp函数计算答案,并将两个值作为向量返回:
(defn rand-mod [n]
(let [a (rand-int n)]
[a (mod (exp a n) n)]))
您可以创建一个函数,随机选择一个数字,使用exp函数计算答案,并将两个值作为向量返回:
(defn rand-mod [n]
(let [a (rand-int n)]
[a (mod (exp a n) n)]))
嗨,rand int是完美的,但是要使用Fermat的小定理进行测试,我需要知道整数是什么,因为我需要比较答案。测试时是否需要打印出整数?提前谢谢。@benjano只需使用let绑定绑定随机数,打印数字,然后返回等式的结果。当然,您可以创建一个包装函数,打印出结果,然后返回随机数。@benjano一个简洁的版本:defn rand-int-p[n]doto rand int n println。然后只需删除-p即可切换到非打印版本。请注意,从非过程函数内部打印通常是一个坏主意,因为并非每个函数的使用都需要打印。嗨,rand int是完美的,但是要使用Fermat的小定理进行测试,我需要知道整数是什么,因为我需要比较它的答案。测试时是否需要打印出整数?提前谢谢。@benjano只需使用let绑定绑定随机数,打印数字,然后返回等式的结果。当然,您可以创建一个包装函数,打印出结果,然后返回随机数。@benjano一个简洁的版本:defn rand-int-p[n]doto rand int n println。然后只需删除-p即可切换到非打印版本。注意,从非过程函数内部打印通常是一个坏主意,因为并非每个函数的使用都需要打印。