欧几里得算法求两个非负整数的最大公因子
2011-04-29 11:46
218 查看
一.欧几里得算法:
1.计算两个整数的最大公因子的欧几里得算法描述:
输入:两个非负整数a,b,且a>=b;
输出:a,b的最大公因子;
1).当b!=0时,做如下操作:
1.1 令r=a%b,a=b,b=r。
2).返回(a);
2.代码如下:
#include<stdio.h>
void input(int &a,int &b)
{
int data1,data2;
scanf("%d,%d",&a,&b);
}
int Euclid_gcd (int max,int min)
{
int r,temp;
if(max<min)
{
temp=max;
max=min;
min=temp;
}
while(min!=0)
{
r=max%min;
max=min;
min=r;
}
return max;
}
void main()
{
int a,b;
printf("请输入两个非负整数数:");
input(a,b);
printf("两数的最大公约数是:gcd(%d,%d)=%d/n",a,b,Euclid_gcd(a,b));
}
/*运行结果:
请输入两个非负整数数:3458,4864
两数的最大公约数是:gcd(3458,4864)=38
请输入两个非负整数数:4864,3458
两数的最大公约数是:gcd(4864,3458)=38
请输入两个非负整数数:12,16
两数的最大公约数是:gcd(12,16)=4
*/
1.计算两个整数的最大公因子的欧几里得算法描述:
输入:两个非负整数a,b,且a>=b;
输出:a,b的最大公因子;
1).当b!=0时,做如下操作:
1.1 令r=a%b,a=b,b=r。
2).返回(a);
2.代码如下:
#include<stdio.h>
void input(int &a,int &b)
{
int data1,data2;
scanf("%d,%d",&a,&b);
}
int Euclid_gcd (int max,int min)
{
int r,temp;
if(max<min)
{
temp=max;
max=min;
min=temp;
}
while(min!=0)
{
r=max%min;
max=min;
min=r;
}
return max;
}
void main()
{
int a,b;
printf("请输入两个非负整数数:");
input(a,b);
printf("两数的最大公约数是:gcd(%d,%d)=%d/n",a,b,Euclid_gcd(a,b));
}
/*运行结果:
请输入两个非负整数数:3458,4864
两数的最大公约数是:gcd(3458,4864)=38
请输入两个非负整数数:4864,3458
两数的最大公约数是:gcd(4864,3458)=38
请输入两个非负整数数:12,16
两数的最大公约数是:gcd(12,16)=4
*/
相关文章推荐
- 两个基础算法最大子序列和和最大公因子数
- 用欧几里得算法求两个非负整数的最大公约数
- 亲密数对(包括最大公因子的讨论)
- 求两个非负整数的最大公约数
- 利用JAVA求两个非负整数的最大公约数
- 随手小代码——在给定集合内求一个数的两个加法因子
- 输入两个非负整数,然后每个数字颠倒顺序,如123颠倒之后就是321,反向求和输出。
- 计算两个非负整数的最大公约数
- 算法学习之欧几里得算法求解两个整数的最大公因子
- pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本
- 给出两个表示两个非负整数的非空链表。数字以相反的顺序存储,它们的每个节点都包含一个数字。添加两个数字,并将其作为链接列表返回。
- Java求解两个非负整数最大公约数算法【循环法与递归法】
- 求两个整数的最大公因子 欧几里得算法(辗转相除法)
- 求两个不超过100位的非负整数的和,差,乘,除
- 两个整数的最大公因数-欧几里得算法
- 欧几里得算法求两个整数的最大公因数
- 利用欧几里得算法求两个整数的最大公因数
- 用欧几里得算法求两个正整数的最大公因子
- C#实现用欧几里德算法、连续整数检测算法、公因数算法求两个非负整数的最大公约数
- 经典算法(2)- 用欧几里得算法求两个整数的最大公约数(GCD)