收藏 分销(赏)

辗转相除法求最大公约数及最小公倍数.doc

上传人:仙人****88 文档编号:7603818 上传时间:2025-01-10 格式:DOC 页数:4 大小:35.50KB 下载积分:10 金币
下载 相关 举报
辗转相除法求最大公约数及最小公倍数.doc_第1页
第1页 / 共4页
辗转相除法求最大公约数及最小公倍数.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
辗转相除法求最大公约数和最小公倍数  1: /*辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。   2: 例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);   3: 因为252 ? 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩   4: 小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的   5: 还没有变成零的数就是两数的最大公约数。   6: */   7: #include <stdio.h>   8:   9: int getGCDAndLCM(int a,int b){   10:     int max=a>b?a:b;//将较大的数赋给max   11:     int min=(max=a)?b:a;//将较小的数赋给min   12:     int temp;//暂时存储变量   13:     while(max!=0){   14:         temp=min%max;   15:         min=max;   16:         max=temp;   17:     }   18:     printf("最大公约数为%d\n",min);   19:     printf("最小公倍数为%d\n",a*b/min);   20: }   21:   22: int main(){   23:     printf("输入两个数整数值\n");   24:     int a,b;   25:     scanf("%d",&a);   26:     scanf("%d",&b);   27:     getGCDAndLCM(a,b);   28:     return 0; 29: } C语言水仙花数算法 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。   1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。   2.程序源代码:   main()   {   int i,j,k,n;   printf("'water flower'number is:");   for(n=100;n<1000;n++)   {   i=n/100;/*分解出百位*/   j=n/10;/*分解出十位*/   k=n;/*分解出个位*/   if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)   {   printf("%-5d",n);   }   }   printf("\n");   }  C数字移动 当前位置:首页>挖经验>题库中心>C/C++语言程序百例>100.数字移动   100.数字移动作者:不详 来源:互联网  酷勤网收集 2008-04-25   摘要   酷勤网  在图中的九个点上,空出中间的点,其余的点上任意填入数字1到8;1的位置固定不动,然后移动其余的数字,使1到8顺时针从小到大排列.移动的规律是:只能将数字沿线移向空白的点.请编程显示数字移动过程。思考题:编写更优化的程序,尽可能减少移动的步数。   在图中的九个点上,空出中间的点,其余的点上任意填入数字1到8;1的位置固定不动,然后移动其余的数字,使1到8顺时针从小到大排列.移动的规律是:只能将数字沿线移向空白的点.   请编程显示数字移动过程。   *问题分析与算法设计   分析题目中的条件,要求利用中间的空白格将数字顺时针方向排列,且排列过程中只能借空白的点来移动数字.问题的实质就是将矩阵外面的8个格看成一个环,8个数字在环内进行排序,同于受题目要求的限制"只能将数字沿线移向空白的点",所以要利用中间的空格进行排序,这样要求的排序算法与众不同.   观察中间的点,它是唯一一个与其它8个点有连线的点,即它是中心点.中心点的活动的空间最大,它可以向8个方向移动,充分利用中心点这个特性是算法设计成功与否的关键.   在找到1所在的位置后,其余各个数字的正确位置就是固定的.我们可以按照下列算法从数字2开始,一个一个地来调整各个数字的位置.   *确定数字i应处的位置;   *从数字i应处的位置开始,向后查找数字i现在的位置;   *若数字i现在位置不正确,则将数字i从现在的位置(沿连线)移向中间的空格,而将原有位置空出;依次将现有空格前的所有元素向后移动;直到将i应处的位置空出,把它移入再次空出中间的格.   从数字2开始使用以上过程,就可以完成全部数字的移动排序.   编程时要将矩阵的外边八个格看成一个环,且环的首元素是不定的,如果算法设计得不好,程序中就要花很多精力来处理环中元素的前后顺序问题.将题目中的3X3矩阵用一个一维数组表示,中间的元素(第四号)刚好为空格,设计另一个指针数组,专门记录指针外八个格构成环时的连接关系.指针数组的每个元素依次记录环中数字在原来数组中对应的元素下标.这样通过指针数组将原来矩阵中复杂的环型关系表示成了简单的线性关系,从而大大地简化了程序设计.   *程序说明与注释   #include<stdio.h>   int a[]={0,1,2,5,8,7,6,3}; /*指针数组.依次存入矩阵中构成环的元素下标*/   int b[9]; /*表示3X3矩阵,b[4]为空格*/   int c[9]; /*确定1所在的位置后,对环进行调整的指针数组*/   int count=0; /*数字移动步数计数器*/
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服