朴素卢卡斯伪代码

montgomery() 函数计算 t1^t2 % p 的值

 1 int montgomery(int t1, int t2, int p)
 2 {
 3     int ans = 1;
 4     while (t2) {
 5         if (t2 & 1)
 6             ans = ans * t1 % p;
 7         t2 >>= 1;
 8         t1 = t1 * t1 % p;
 9     }
10     return ans;
11 }
12
13 int C(int dn, int up, int p)
14 {
15     if (dn == up)
16         return 1;
17     if (dn < up)
18         return 0;
19     if (up > up - dn)
20         up = up - dn;
21     int i, t1 = 1, t2 = 1;
22     for (i = 1; i <= up; ++i) {
23         t1 = t1 * i % p;
24         t2 = t2 * (dn - i + 1) % p;
25     }
26     return t2 * montgomery(t1, p - 2, p) % p;
27 }
28
29 int lucas(int dn, int up, int p)
30 {
31     if (up == 0)
32         return 1;
33         return C(dn % p, up % p, p) * lucas(dn / p, up / p, p) % p;
34 }
时间: 2024-11-03 22:37:55

朴素卢卡斯伪代码的相关文章

机器学习实战读书笔记(四)基于概率论的分类方法:朴素贝叶斯

4.1 基于贝叶斯决策理论的分类方法 朴素贝叶斯 优点:在数据较少的情况下仍然有效,可以处理多类别问题 缺点:对于输入数据的准备方式较为敏感 适用数据类型:标称型数据 贝叶斯决策理论的核心思想:选择具有最高概率的决策. 4.2 条件概率 4.3 使用条件概率来分类 4.4 使用朴素贝叶斯进行文档分类 朴素贝叶斯的一般过程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法 5.测试算法 6.使用算法 朴素贝叶斯分类器中的另一个假设是,每个特征同等重要. 4.5 使用Python进行文本分类

《机器学习实战》学习笔记:基于朴素贝叶斯的分类方法

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率. 目录: 一.基于贝叶斯理论的分类方法 二.关于朴素贝叶斯的应用场景 三.基于Python和朴素贝叶斯的文本分类 1.准备数据 2.训练算法 3.测试算法 四.小结 以下进入正文: 一.基于贝叶斯理论的分类方法 假设有两类数据组成的数据集如下: 其中,假设两个概率分布的参数已知,并用p1(x,y)表示当前数据点(x,y)属于类

4种字符串匹配算法:BS朴素 Rabin-karp 有限自动机 KMP(上)

字符串的匹配的算法一直都是比较基础的算法,我们本科数据结构就学过了严蔚敏的KMP算法.KMP算法应该是最高效的一种算法,但是确实稍微有点难理解.所以打算,开这个博客,一步步的介绍4种匹配的算法.也是<算法导论>上提到的.我会把提到的四种算法全部用c/c++语言实现.提供参考学习.下图的表格,介绍了各个算法的处理时间和匹配时间.希望我写的比较清楚.如果不理解的,或者不对的,欢迎留言. 字符串匹配算法及其处理时间和匹配时间 算法 预处理时间 匹配时间 朴素算法 0 O((n-m+1)m) Rabi

朴素贝叶斯分类算法原理分析与代码实现

前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果是挺不错的. 在说明原理之前,先介绍一个叫词向量的概念. --- 它一般是一个布尔类型的集合,该集合中每个元素都表示其对应的单词是否在文档中出现. 对应关系和词汇表一一对应. 比如说,词汇表只有三个单词:'apple', 'orange', 'melo',某文档中,apple和melo出现过,那么其对应的词向量就是 {1, 0, 1}. 这种模型

【ToReadList】六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)(转载)

问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个. 比如例如给定序列: { -2, 11, -4, 13, -5, -2 } 其最大连续子序列为{ 11, -4, 13 },最大和为20. =============================================================== 问题分析: 1.首先最朴素的方法是暴力 O(n^3) 直接两个for循环枚举子序列的首尾,然后再来个循环计算序列的和,每次更新和的最大值.

朴素贝叶斯-基于概率的分类方法

决策树.knn算法都是结果确定的分类算法,数据示实例最终被明确的划分到某个分类中 贝叶斯:不能完全确定数据实例应该划分到某个类,湖综合只能给出数据实例属于给定分类的概率 *引入先验概率与逻辑推理来处理不确定命题 *(扩展命题),另一种叫频数概率,从数据本身出发得到结论,不考了逻辑推理及先验知识. 朴素贝叶斯:整个形式化过程中制作最原始,最简单的假设 python文本能力:将文本划分为词向量,利用词向量对文本分类 朴素贝叶斯:选择高概率对应的类别 优点:在数据较少的情况下仍然有效,可以处理多类别问

第五篇:朴素贝叶斯分类算法原理分析与代码实现

前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果挺不错的. 在说明原理之前,先介绍一个叫词向量的概念. --- 它一般是一个布尔类型的集合,该集合中每个元素都表示其对应的单词是否在文档中出现. 比如说,词汇表只有三个单词:'apple', 'orange', 'melo',某文档中,apple和melo出现过,那么其对应的词向量就是 {1, 0, 1}. 这种模型通常称为词集模型,如果词向量元

机器学习算法( 四、朴素贝叶斯算法)

一.概述 前两章我们要求分类器做出艰难决策,给出“该数据实例属于哪一类”这类问题的明确答案.不过,分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值. 概率论是许多机器学习算法的基础,所以深刻理解这一主题就显得十分重要.第3章在计算特征值取某个值的概率时涉及了一些概率知识,在那里我们先统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,就得到了特征取该值的概率.我们将在此基础上深人讨论.      本章会给出一些使用概率论进行分类的方

第四章:基于概率论的分类方法: 朴素贝叶斯

本章内容□使用概率分布进行分类□学习朴素贝叶斯分类器□解析RSS源数据口使用朴素贝叶斯来分析不同地区的态度 前两章我们要求分类器做出艰难决策,给出“该数据实例属于哪一类”这类问题的明确答案.不过,分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值.       概率论是许多机器学习算法的基础,所以深刻理解这一主题就显得十分重要.第3章在计算特征值取某个值的概率时涉及了一些概率知识,在那里我们先统计特征在数据集中取某个特定值的次数,然后除以数据集的