首页 > 分享 > 密码学学习之旅

密码学学习之旅

在用欧几里得算法以前先得说说整除,最小公倍数,最大公因数
1.整除:a=bq,则称b整除a,或者a能被b整除。记为: b|a 。若b 不能被a整除则:b|/a(这里的|/是穿过那一竖的,因为某些原因不能打出来)
2.最大公因数:a1,a2,a3…an为n个不全为0 的整数,d是其中每个数的因数,则称d为a1,a2,a3,…,an的公因数所有公因数中最大的称为最大公因数。记为:gcd(a1,a2,a3,…an),或者(a1,a2,a3,…an)。
3,最小公倍数:所有公倍数中最小的正整数成为最小公倍数。记为:lcm(a1,a2,a3,…,an)或者[a1,a2,a3,…an]。

欧几里得算法又成为辗转相除法

反复使用带余算法求最大公约数。
例:r0=a,r1=b,反复运用欧几里得:
r0=r1q1+r2
r1=r2q2+r3

rn-1=rnqn+rn+1;rn+1=0;
这时的rn 就是a,b的最大公因数。
举例:
计算(93991,102757):
102757 = 939911 + 8766
93991 = 876611 - 2435
8766 = 24354 - 974
2435 = 9742 + 487
974 = 4872+0
所以(93997,102757)=487
这样就求出最大共因数,要想求出最小公倍数可以用a/gcd(a,b) * b
我们用C语言来进行试试叭。

#include<stdio.h> #include<math.h> int gcd(int a,int b) { int c; c= a % b; while(c>0) { a=b; b=c; c= a % b; } return b; } int main() { int a,b,d; long lcm; printf("请输入a,b 的值:n"); scanf("%d %d",&a,&b); a = abs(a); b = abs(b); d = gcd(a,b); lcm = a / d * b; printf("a,b的最大公因数为:%d,最小公倍数为:%ld",&d,&lcm); return 0; }

12345678910111213141516171819202122232425262728'

二元一次方程求解

ax+by=c 有整数解时:gcd(a,b)|c。
通解为:x=x0+bt/(a,b);
y=y0-at/(a,b)
例如:求方程243x+198y=909的整数解
243=198+45 9=(243-198)9-1982=2439-19811
198=454+18 9=45-(198-454)2=459-19811
45=182+9 9=45-182
18=92

相关知识

现代密码学简史
如何学习网络安全?(网络安全学习笔记)
武汉插花培训:美丽艺术的学习之旅
AI小白学习之旅(1):从什么是机器学习说起
教学设计《追寻油菜花之旅
花店插花培训:打造花艺新手的绿色之旅
花境设计入门课:轻松学习花境设计技巧,开启你的绿色创作之旅
芳香之旅
科普之旅 与探索同行
读万卷书 行万里路,恩平花海欢乐世界研学之旅上线啦!

网址: 密码学学习之旅 https://m.huajiangbk.com/newsview857172.html

所属分类:花卉
上一篇: 转基因的方法和原理.pptx
下一篇: 顾村公园早樱处于最佳观赏期,上海