Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 费马小定理_Clojure - Fatal编程技术网

Clojure 费马小定理

Clojure 费马小定理,clojure,Clojure,我想为费马的小定理写一个clojure函数 我正在分解这个问题,并试图一步一步地完成它 我想写的第一件事是回答这部分问题的代码: 给定一个数字n,选择一个小于n的随机数a。计算^n模n的余数 以下是我迄今为止编写的代码: (defn exp [a n] (reduce * (repeat n a))) (mod (exp 3 5) 5) 这似乎工作正常,可以测试素数。但是我现在想把它放在一个函数中,得到一个随机选择的函数。在clojure中有没有一种简单的获取随机整数的方法 非常感谢

我想为费马的小定理写一个clojure函数

我正在分解这个问题,并试图一步一步地完成它

我想写的第一件事是回答这部分问题的代码:

给定一个数字n,选择一个小于n的随机数a。计算^n模n的余数

以下是我迄今为止编写的代码:

  (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即可切换到非打印版本。注意,从非过程函数内部打印通常是一个坏主意,因为并非每个函数的使用都需要打印。