用“辗转相除法”求最大公约数
来源:互联网 发布:马原人工智能与意识 编辑:程序博客网 时间:2024/06/12 01:01
用“辗转相除法”求最大公约数
#include<stdio.h>//辗转相除法求最大公约数 int main(){int a,b,temp;printf("请输入a:");scanf("%d",&a);fflush(stdin);printf("请输入b:");scanf("%d",&b);fflush(stdin);printf("调整好顺序前:a=%d,b=%d\n",a,b);if(a<b){temp=a;a=b;b=temp;}printf("调整好顺序后:a=%d,b=%d\n",a,b);while(temp!=0)//temp用来存放余数{temp=a%b;if(temp==0)break;//当余数为0时,不再进行下一步的赋值跳出循环 a=b;b=temp;}printf("最大公约数为:%d\n\n",b);return 0;}
看书后更改为:
#include<stdio.h>int main(){int m,n,temp,r;printf("请输入两个正整数m,n:");scanf("%d,%d",&m,&n);if(m<n)//把大的数放入m,小的放入n {temp=m;m=n;n=temp;}printf("排序后:m=%d,n=%d\n",m,n);while(n!=0)//求最大公约数{r=m%n;m=n;n=r;}printf("最大公约数为:%d\n",m);return 0;}
最后理解了,根据我的算法,更改为:
#include<stdio.h>//辗转相除法求最大公约数 int main() { int a,b,temp; printf("请输入a:"); scanf("%d",&a); fflush(stdin); printf("请输入b:"); scanf("%d",&b); fflush(stdin); printf("调整好顺序前:a=%d,b=%d\n",a,b); if(a<b) { temp=a; a=b; b=temp; } printf("调整好顺序后:a=%d,b=%d\n",a,b); while(temp!=0)//temp用来存放余数 { temp=a%b; //if(temp==0)break;//当余数为0时,不再进行下一步的赋值跳出循环 a=b; b=temp; } printf("最大公约数为:%d\n\n",a); return 0; }
把这一行注释掉: //if(temp==0)break;//当余数为0时,不再进行下一步的赋值跳出循环后输出a就行。
反思:
做错的根源是:没有好好的手写程序运算过程。
以后不能偷懒,要在纸上写好程序的运算过程。
0 0
- 用辗转相除法求最大公约数
- 用辗转相除法求最大公约数
- 用辗转相除法求最大公约数.
- 用“辗转相除法”求最大公约数
- 用辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 求最大公约数-辗转相除法
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 【辗转相除法求最大公约数】
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- 辗转相除法求最大公约数
- Spark源码学习(10)——Spark Streaming
- 深入探讨 Java 类加载器
- 堆排序
- 数组中的逆序对
- 盲打首秀
- 用“辗转相除法”求最大公约数
- Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
- ubuntu配置jdk环境变量的问题
- 语言设计的分类
- 答疑java集合问题
- 我的kafka JAVA调试代码
- Android 框架练成 教你打造高效的图片加载框架
- “再按一次返回键退出程序”实现
- LeetCode第47.题之Permutations II