欧几里得算法实验.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告填写说明 每门实验课程均应按本格式完成实验报告。 实验报告要求双面打印。 学生应在做完实验后指定时间内完成实验报告,交指导教师评阅。 学生必须依据实验指导书,提前预习实验目的、实验基本原理、实验内容及方法。 教师将在实验过程中抽查学生预习情况。 在课程全部实验项目完成后,分班级按学生学号将各实验项目报告装订成册,并附实验课程成绩汇总表,交课程承担单位(实验中心或实验室)保管存档。 信息安全中的数学方法与技术课程实验报告 学号 姓名 专业班级 实验题目 欧几里德算法 实验类型 □演示型 □验证型 eq \o\ac(□,√)设计型 □综合型 实验目的 1.掌握欧几里德算法,并会运用其求出两数的最大公约数; 2.掌握求解同余方程的方法会对其求解; 3.分别会对其进行c语言进行编程。 实验内容 使用VC++编程语言设计实现一个算法程序,要求包括以下部分: 1)欧几里德算法求的最大公因数和满足的整数 和;当时,求出相应的及,. 2)求解同余方程 其中. 当 ,求出. 实验原理 欧几里得算法求最大公约数 欧几里德算法又称 辗转相除法,用于计算两个整数a,b的 最大公约数。其计算原理依赖于下面的定理: 定理1:gcd(a,b) = gcd(b,a mod b) 定理2:假设 a,b 且 a b. 由除法原理我们知存在 h0,r0 使得 a = bh0 + r0,其中 r0 b. 若 r0 0,则存在 h1,r1 使得b = r0h1 + r1,其中r1 r0. 若 r1 0,则存在 h2,r2 使得r0 = r1h2 + r2,其中r2 r1 若 r1 0,则存在 h2,r2 使得r0 = r1h2 + r2,其中r2 r1 如此继续下去直到 rn = 0 为止. 若 n = 0 (即 r0 = 0),则 gcd(a,b) = b. 若 n1,则 gcd(a,b) = rn - 1. \o 源代码 1.求最大公约数及s和t 实验代码: #includestdio.h #includestdlib.h #includestring.h int GCD = 0; void main() { // 求整数a和b的最大公因子 int a = 0; int b = 0; printf(请输入整数a的值: \n); scanf(%d,a); printf(请输入整数b的值: \n); scanf(%d,b); if(a 0) a = -a; if(b 0) b = -b; if(a == 0||b == 0) { if(a + b == 0) { printf(整数a和b无最大公因子!\n); exit(0); } else if(a == 0b != 0) { printf(最大公因子(a,b) = %d\n,b); GCD = b; } else if(a != 0b == 0) { printf(最大公因子(a,b) = %d\n,a); GCD = a; } } 源代码 { printf(最大公因子(a,b) = %d\n,a); GCD = a; } } else { int x0 = a; int x1 = b; int x2 = x0 % x1; while(x2 0) { x0 = x1; x1 = x2; x2 = x0 % x1; } printf(最大公因子(a,b) = %d\n,x1); GCD = x1; } // 求整数s和t使得sa + tb = (a,b) int r0; int r1; if(a b) { r0 = a; r1 = b; } else if(a = b) { r0 = b; r1 = a; } int s0 = 1; int s1 = 0; int t0 = 0; int t1 = 1; int s2 = s0; int t2 = t0; int s,t,a1,r2; while(r1 != 0) 源代码 int s0 = 1; int s1 = 0; int t0 = 0; int t1 = 1; int s2 = s0; int t2 = t0; int s,t,a1,r2; while(r1 != 0) { a1 = r0/r1; r2 = r0 - a1*r1; s2 = s0 - a1*s1; t2 = t0 - a1*t1; s = s1;

文档评论(0)

_______ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档