(1)穷举法 ,由于a阳的最大公约数不可能比a和b中的较小者还大,否则一定不能整除它,因此,先找到,a和b中中的较小者t,然后从t开始逐次减I尝试每种可能.即检验t到I之间的所有整数,第一个满足公约数条件的t就是和b的最大公约数。
(2)欧几里得算法,也称辗转相除法、对正整数a和b,连续进行求余运算,直到余数为0为止.此时非0的除数就是最大公约数。设r=a mod b表示a除以上的余数,若r≠0将b作为新的a,r作为新的b,即Ged(a,b)=Ged(b,r),重复a mod b运算,直到r=0为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:Ged(50,15)=Ged(15,5)=Ged(5,0) =5。
(3)递归方法。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的如下3条性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。
性质1如果a>b, 则a和b与a-b和b的最大公约数相同, 即Ged(a,b)=Ged(a-b,b)
性质2如果b>a, 则a和b与a和b-a的最大公约数相同, 即Ced(a,b)=Ged(a,b-a)
性质3如果a=b, 则a和b的最大公约数与a值和b值相同, 即Ged(a,b)=a=b
(1)如果采用如下方式定义一维字符数组:const inc maxSize-30;char a[maxSize] ;则这种数组在程序执行过程中不能扩充。
(2)如果采用如下方法定义一维字符数组:const int maxSLze=30;char*a=new char[maxSize] ;则这种数组在程序执行过程中不能扩充。
(3)数组是一种静态的存储空间分配,就是说,在程序设计时必须预先定义数组的数据类型和存储空间大小,由编译程序在编译时进行分配。
(4)二维数组可以视为数组元素为一维数维的一维数组。因此,二维数组是线性结构。
(5)数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也本是树形的。
(6)顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用。
(7)在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。
(8)顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问。
(9)n阶三对角矩阵总共n2个矩阵元素中最多只有3n一2个非零元素,因此它是稀疏矩阵。
(10)插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常使用。
(11)使用三元组表示稀疏矩阵中的非零元索能节省存储空间。
(12)用字符数组存储长度为n的字符串,数组长度至少为n+1.
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!