精华内容
下载资源
问答
  • 具体原理不多说,直接上代码实现,要注意的地方就是递归方式中结果的类型要定义为unsigned long long 防止溢出,比如这里测试的例子(),如果结果的类型为unsigned(32位),比如本例运算变量result在循环过程中有...

    具体原理不多说,直接上代码实现,要注意的地方就是递归方式中结果的类型要定义为unsigned long long 防止溢出,比如这里测试的例子(9726^{3533} mod 11413),如果结果的类型为unsigned(32位),比如本例运算变量result在循环过程中有一中间值为9726^{3},超过32位,就会产生溢出。

    #include<iostream>
    using namespace std;
    //如果将mod理解成无限大,那么就相当于是在求指数,既然放大是合理的那么缩小当然也是合理的,即在循环的过程中对result和a求模不会影响最终的结果同时减小运算量
    //非递归快速幂
    unsigned none_recur_pow_mod(unsigned a, unsigned b, unsigned mod)
    {
    	unsigned result = 1;
    	while (b)
    	{
    		if (b & 1)
    		{
    			result = (result*a) % mod;
    		}
    		a = (a*a) % mod;
    		b >>= 1;
    	}
    	return result;
    }
    //递归快速幂(这里是将间递归快速幂改写成“非递归形式”,但原理仍然是递归的思想)
    unsigned recur_pow_mod(unsigned a, unsigned b, unsigned mod)
    {
    	unsigned long long  result = 1; //这里result定义为64位的整型是因为有时result的中间值会超过32位,如果只用unsigned会溢出
    	unsigned array[64] = { 0 };  //用来存储b的二进制形式的每一位数
    	unsigned length = 0;
    	while (b)
    	{
    		array[length++] = b & 1;
    		b >>= 1;
    	}
    	for (int j = length - 1; j >= 0; j--)
    	{
    		if (array[j] == 1)
    			result = (result * result*a) % mod;
    		else
    			result = (result * result) % mod;
    	}
    	return result;
    }
    int main()
    {
    	unsigned a, b, mod;
    	unsigned result = 0;
    	cin >> a >> b >> mod;
    	result = none_recur_pow_mod(a, b, mod);
    	cout <<"none recursive: " << result << endl;
    	result = recur_pow_mod(a, b, mod);
    	cout << "recursive: " << result << endl;
    
    	return 0;
    }

    展开全文
  • 模运算的应用

    2020-08-25 10:30:25
    根据威尔逊定理,可得如果p是素数,那么就能找到这样的m值 可使得 (p-1)! = (p-1) + mp 或者可以说成 (p-1)! = (p-1) mod p 举个例子 6! = 1 * 2 * 3 * 4 * 5 * 6 ...PS: 也可以用模乘验证费马小定理. ...

    根据威尔逊定理,可得如果p是素数,那么就能找到这样的m值
    可使得 (p-1)! = (p-1) + mp
    或者可以说成 (p-1)! = (p-1) mod p

    举个例子

    6! = 1 * 2 * 3 * 4 * 5 * 6

    原式 = 1 * (2 * 4) * (3 * 5) * 6
    原式 = (1 * 1 * 1* 6) mod 7
    原式 = 6 mod 7

    PS: 也可以用模乘验证费马小定理.

    展开全文
  • 于是根据这个解释器模式实现了一个针对加、减、、除运算的解释器,然后为了演示扩展解释器,又增加了一个模运算的操作扩展。这个东西仅有学习价值而已,没有多大的实际用途,.NET里面已经有很好的实现了,不过如果...

    之前研究Lamda表达式,突然对解释器感兴趣,于是在网上找了一下相关的资料,但是关于解释器的文章比较少,关于.NET的文章就更少了,只知道一个解释器模式(设计模式之一)。

    于是根据这个解释器模式实现了一个针对加、减、乘、除运算的解释器,然后为了演示扩展解释器,又增加了一个模运算的操作扩展。

     

    这个东西仅有学习价值而已,没有多大的实际用途,.NET里面已经有很好的实现了,不过如果你想扩展EF,LINQ之类的,还是需要了解这方面的东西。

     

    压缩包里面包含了简单的说明和UML图。

    点击下载

    转载于:https://www.cnblogs.com/sweetwxh/archive/2011/07/29/2121421.html

    展开全文
  • 大整数运算

    2019-01-11 11:54:22
    2. 大整数的加、减、、除和指数运算,一般是在求两大整数在取余操作下的加、减、、除和指数运算,即分别求 (a +b) mod n, (a - b) mod n, (a * b) mod n, (a / b) mod n 和(a ^ b) mod n。其中a ^ b 是求a的b...
  • 高等线性代数X 模论基础1 同态(RRR-...假设VVV对加法运算和数乘运算(这两个运算合称线性运算)封闭,如果下面的性质成立:∀α,β,ξ∈V\forall \alpha,\beta,\xi \in V∀α,β,ξ∈V, k,l∈Fk,l \in Fk,l∈

    高等线性代数X 模论基础1 模与模同态

    高等线性代数第X部分我们试图推广线性代数中的线性空间的概念。在基础线性代数中,我们在域FF(对四则运算封闭的集合)上定义了线性空间VV
    定义0 线性空间
    假设VV对加法运算和数乘运算(这两个运算合称线性运算)封闭,如果下面的性质成立:α,β,ξV\forall \alpha,\beta,\xi \in V, k,lFk,l \in F

    1. 加法交换律:α+β=β+α\alpha+\beta=\beta+\alpha
    2. 加法结合律:α+(β+ξ)=(α+β)+ξ\alpha+(\beta+\xi) = (\alpha + \beta) + \xi
    3. 零元:0V,α+0=α\exists 0 \in V, \alpha + 0 = \alpha
    4. 负元:αV,α+(α)=0\exists -\alpha \in V, \alpha+(-\alpha)=0
    5. 幺元:1F,1α=α\exists 1 \in F, 1 \cdot \alpha = \alpha
    6. 数乘结合律:(k+l)α=kα+lα(k+l)\alpha = k\alpha + l\alpha
    7. 数乘分配律:k(α+β)=kα+kβk(\alpha+\beta) = k\alpha + k\beta

    则称VV是域FF上的线性空间。

    在高等线性代数第X部分中,我们试图将线性空间这种代数结构推广到环RR上(这种代数结构被称为RR-模或RR-module),并验证域上的线性空间的性质在环上是否依然成立。

    模(RR-module)

    我们先回顾一下群、环、域的定义。

    定义1 群(Group)
    假设GG是一个非空集合,ppGG上的一个二元运算,p:G×GGp:G \times G \to G,称(G,p)(G,p)是一个群,如果

    1. Closure: a,bG\forall a,b \in G, p(a,b)Gp(a,b) \in G
    2. Associativity: a,b,cG\forall a,b,c \in G, p(a,p(b,c))=p(p(a,b),c)p(a,p(b,c))=p(p(a,b),c)
    3. Identity: eG\exists e \in G, aG\forall a \in G, p(a,e)=p(e,a)=ap(a,e)=p(e,a)=a
    4. Inverses: aG\forall a \in G, a1G\exists a^{-1}\in G, p(a,a1)=p(a1,a)=ep(a,a^{-1})=p(a^{-1},a)=e

    只满足1、2的称为半群;只满足1、2、3的称为幺半群。

    定义2 交换群(Commutative Group)
    称群(G,p)(G,p)是一个交换群,如果

    1. Commutativity: a,bG\forall a,b \in G, a+b=b+aa+b=b+a

    定义3 环(Ring)
    在非空集合RR上定义两个二元运算,p:R×RR, q:R×RRp:R \times R \to R, \ q:R \times R \to R,称(R,p,q)(R,p,q)是一个环,如果a,b,cR\forall a,b,c \in R

    1. (R,p)(R,p)是交换群
    2. (R,q)(R,q)是幺半群(1R1_R为identity,注意(R,q)(R,q)不满足inverses)
    3. Left distributive law: q(a,p(b,c))=p(q(a,b),q(a,c))q(a,p(b,c))=p(q(a,b),q(a,c))
    4. Right distributive law: q(p(a,b),c)=p(q(a,c),q(b,c))q(p(a,b),c)=p(q(a,c),q(b,c))

    如果(R,q)(R,q)满足交换律,就称(R,p,q)(R,p,q)是交换环(Commutative ring)。

    定义4 域(Field)
    称交换环(R,p,q)(R,p,q)是域,如果(R,q)(R,q)是一个群,并且1Re1_R \ne e

    现在我们基于群环域以及域上的线性空间的定义,将线性空间这个代数结构推广到环上:

    定义5RR-模 (Left RR-module)
    假设RR是一个环,在非空集合MM上定义加法(addition)+:M×MM+:M\times M \to M与数乘(scalar multiplication):R×MM\cdot:R \times M \to M,称(M,+,)(M,+,\cdot)是一个Left RR-module,如果

    (A1) Closure: a,bM\forall a,b \in M, a+bMa+b \in M
    (A2) (M,+)(M,+)是一个交换群,记identity为0,基于逆元可以定义减(subtraction)
    (M1) Closure: mM,rR\forall m \in M,\forall r \in R, rmMr \cdot m \in M
    (M2) Identity: 1RR\exists 1_R \in R, 1RmM,mM1_R \cdot m \in M,\forall m \in M
    (M3) Left associativity: r,sR,mM\forall r,s \in R,m \in M, (rs)m=r(sm)(rs) \cdot m = r \cdot (s \cdot m)
    (D1) Distributive law for ring: r,sR,mM\forall r,s \in R,m \in M, (r+s)m=rm+sm(r+s)\cdot m = r \cdot m + s \cdot m
    (D2) Distributive law for module: rR,m,nM\forall r \in R,m,n \in M, r(m+n)=rm+rnr \cdot (m+n) = r \cdot m + r \cdot n

    其中(A1)-(A2)是加法满足的条件,(M1)-(M3)是乘法满足的条件,(D1)-(D2)是分配律。仿照Left RR-module,我们可以定义Right RR-module。我们称RR-module中的元素为向量(vector),称RR中的元素为数量(scalar)。

    性质1 如果RR是交换环,Left RR-module与Right RR-module没有本质区别,称此时的模为RR-module。

    RR-模同态(RR-module homomorphism)

    RR-模同态是线性空间上的线性映射的推广。

    定义6 RR-模同态
    假设M,NM,N是两个Left RR-module,称映射f:MNf:M \to N是一个Left RR-module homomorphism,如果

    1. f(x+y)=f(x)+f(y),x,yMf(x+y)=f(x)+f(y),\forall x,y \in M
    2. f(rx)=rf(x),xM,rRf(r \cdot x) = r \cdot f(x),\forall x \in M,r \in R

    RR-module homomorphism也被称为RR-maps或者RR-linear maps。下面是一些RR-模同态的常用术语:

    If ff injective (1-1) surjective (onto) bijective M=NM=N M=NM=N and bijective
    Terminology monomorphism epimorphism isomorphism endomorphism automorphism

    其中endomorphism是线性变换的推广,automorphism是满秩线性变换的推广。

    定义7 RR-同构(RR-isomorphic)
    如果存在g:MNg:M \to NggRR-module isomorphism,就称MMNNRR-isomorphic,记为MNM \cong NRR-同构是线性空间同构的直接推广。

    一些例子

    例1(R,+,)(R,+,\cdot)是一个左RR-模。定义f:RRf:R \to Rff是一个RR-module isomorphism当且仅当f(1R)=1Rf(1_R)=1_Rf(xy)=f(x)f(t)f(x \cdot y) = f(x) \cdot f(t)

    例2 假设(R,+,)(R,+,\cdot)是环(S,+,)(S,+,\cdot)的子环,则SS是一个左RR-模。

    例3FF上的左FF-模等于FF上的线性空间。

    例4 基于任意交换群(M,+)(M,+)可以构造左Z\mathbb{Z}-模。交换群上已经有加法了,定义数乘为nx=x+x++xn \cdot x = x+x+ \cdots + x (summation of nn x’s), nZ\forall n \in \mathbb{Z}, xMx \in M,可以验证(M,+,)(M,+,\cdot)是一个左Z\mathbb{Z}-模。

    展开全文
  • awk算术运算

    千次阅读 2015-04-23 22:32:16
    awk命令都将按浮点方式执行算术运算。下表列出了所有的算术运算符。 运算符 含义 例子 + 加 x+y - 减 x-y * x*y / 除 x/y % ...
  • 非对称密码在加密和解密时,是把加密的数据当作一个大的正整数来处理,这样就涉及到大整数的加、减、、除和指数运算等,同时,还需要对大整数进行输出。请采用相应的数据结构实现大整数的加、减、、除和指数运算...
  • 100个VHDL例子

    2008-11-09 00:05:32
    第38例 四值逻辑向量按位或运算 第39例 生成语句描述规则结构 第40例 带类属的译码器描述 第41例 带类属的测试平台 第42例 行为与结构的混合描述 第43例 四位移位寄存器 第44例 寄存/计数器 第45例 顺序过程调用 第...
  • 分析和运算,达到了较好的效果。 由于每个评委看待问题的角度不同,个人观念也有差异,所以不同评委对同一份答 卷评的分数有高有低,可能出现“不公平”及尺度偏差等问题。在处理这些数据时,充分 考虑了评委的差异...
  • 这个库是计算乘模运算,幂模运算(蒙哥马利算法),最大公约数算法及扩展最大公约数算法(扩展欧几里得算法)等。 2、质数库。Miller_Rabin素数判断法,大整数快速因式分解算法(pollard_rho算法),生成指定位数的...
  • 算术运算符:+(加), - (减),*(), /(除), %(模运算),++(自增),–(自减)、 1. 加减乘除运算: 加减乘除跟我们平时一样 例子:int a = 1,b = 2; (加)int c = a + b; (减)int d = a - b; ()int e = a*...
  • pytorch框架中的两种常用乘法

    千次阅读 2019-08-12 08:37:46
    在使用pytorch框架复现模型的时候,我们需要再forward()函数中定义模型的逻辑,这时就要对模型参数使用一些运算,这里简单介绍一下pytorch框架下的两种常用的乘法运算。 1 按元素 按元素,即张量的对应元素...
  • RSA算法的纯Python实现

    2014-05-28 15:33:53
    这个库是计算乘模运算,幂模运算(蒙哥马利算法),最大公约数算法及扩展最大公约数算法(扩展欧几里得算法)等。 2、质数库。Miller_Rabin素数判断法,大整数快速因式分解算法(pollard_rho算法),生成指定位数的...
  • 并在此基础上,为了使得二元等距语言标签在定性融合规则中的合理运算,进一步提出二元标签之间的加、减、、除等运算算子,以及DSmT(Dezert-Smarandache theory)理论框架下的定性组合规则和冲突分配规则,并给出...
  • Java基础-赋值运算符

    2020-06-24 13:52:24
    运算 例子 结果 = 赋值 a=1 a=1 += 加等于 a=1; b=2 ; a += b; a=3, b=2 -= 减等于 a=3; b=2; a -= b; a=1; b=2 *= 等于 a=2; b=3; a *= b; a=6; b=3 /= 除等于 a=3; b=2; a /= 3; a=1; b=2 %= ...
  • 算术运算符的作用:用于支持日常一些普通的算术运算,常用算术运算符: 算术运算符 作用 + 加 - 减 * / 除 % 求,返回除法的余数 // 取整除 -- 返回商的部分 ** n次幂 例子: a = 21 b...
  • 从高级语言到汇编2

    千次阅读 2007-04-25 14:35:00
    出处:www.j2mefans.com该文章为本站原创,如有引用,请注明出处和作者第二篇 算术运算对于高级语言除了赋值操作外,还包括算术运算加(+)、减(-)、(*)、除(/)、求余(或称模运算,%),下面是一个简单的例子:int ...
  • 把模板(n*n)放在矩阵上(中心对准要处理的元素),用模板的每个元素去矩阵中的的元素,累加和等于这个元素例如例子中的第二行第二个元素16= 1*2+1*1+1*3+1*1+1*2+1*1+1*2+1*1+1*2+1*1+1*3的计算,依次计算每个...
  • 矩阵的卷积

    万次阅读 2011-11-19 13:37:14
    把模板(n*n)放在矩阵上(中心对准要处理的元素),用模板的每个元素去矩阵中的的元素,累加和等于这个元素例如例子中的第二行第二个元素16= 1*2+1*1+1*3+1*1+1*2+1*1+1*2+1*1+1*2+1*1+1*3的计算,依次计算每个...
  • Luhn是著名的校验和算法也叫10算法,主要应用于解决银行卡号,社保号等重要信息传输出错问题。  先来解释下算法原理,校验和类型的算法,一般是ID+校验号,校验号和ID号的每位相关,如果出错,通过某种运算能...
  •  两位数9中,要求这个两位数的个位比十位大1,列表:12、23、34、45、56、67、78、89,运算方法是第一位保留,第二位为0,第三位为第一位以9为的补数,就是用9减去第一位的数。很准!  不信你再试试?45×9...
  • ++中实现了一个矩阵对象,该对象支持加,减,(按矢量,标量或矩阵),转置,幂或行列式等功能,所有这些功能都可以像在MatLab中一样自然地在源代码中使用。 特征 支持矩阵加法,减法,乘法,换位,幂,行列式,...
  • 它们之间允许进行运算运算结果为长整型。但c,d被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在以后...
  • 19.6.6 一个例子 342 19.7 例程:效果文件中的光照和纹理 343 19.8 例程:雾效 349 19.9 例程:卡通效果 352 19.10 EffectEdit 353 19.11 小结 354 附录 Windows编程入门 355 参考文献 372
  • LINGO软件的学习

    2009-08-08 22:36:50
    下面举两个例子。 例1.1 如何在LINGO中求解如下的LP问题: 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO软件计算6个发点8个收点的...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

模乘运算例子