费马的小定理Clojure

时间:2017-01-05 15:58:16

标签: clojure

我正在尝试为费马的小定理编写一个clojure函数。

我正在解决问题并尝试逐步完成。

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

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

以下是我到目前为止编写的代码:

  (defn exp [a n]
  (reduce * (repeat n a)))

(mod (exp 3 5) 5)

这似乎工作正常,可以测试素数。但是我现在想把它放在一个函数中并随机选择一个。是否有一种简单的方法可以在clojure中获取随机整数?

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:2)

您可能需要rand-int功能:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="mainApp">
  <div ng-controller="mainCtrl">
    <table ng-repeat="l1 in list1">
      <tr>
        <td>
          {{l1.name}}
        </td>
      </tr>
      <tr ng-repeat="l2 in list2">
        <td>name: {{l2.name}},</td>
        <td>price: {{l2.price}},</td>
        <td>quantity wanted: <input ng-model="quantity[l2.uniqueId]"><button ng-click="inc(l2.uniqueId)" type="button">+</button></td>
      </tr>
    </table>


    {{quantity}}<!-- sum of all quantities * prices -->


  </div>
  <div>

答案 1 :(得分:0)

您可以创建一个函数,该函数随机选择一个数字,使用exp函数计算答案,并将两个值作为向量返回:

(defn rand-mod [n]
  (let [a (rand-int n)]
    [a (mod (exp a n) n)]))