关于最大公约数的算法int gcd(int a,int b){ int t = 0; int c = 0; if(a==
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/17 00:12:24
关于最大公约数的算法
int gcd(int a,int b)
{
int t = 0;
int c = 0;
if(a==0)
return b;
if(b==0)
return a;
if(a < b)
{
t=a;
a=b;
b=t;
}
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
return b;
}
--------------------------------------------------
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
为什么这么算能得出结果?求解释
int gcd(int a,int b)
{
int t = 0;
int c = 0;
if(a==0)
return b;
if(b==0)
return a;
if(a < b)
{
t=a;
a=b;
b=t;
}
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
return b;
}
--------------------------------------------------
c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
为什么这么算能得出结果?求解释
这是贪心算法.
设最大公约数为X,则存在整数i,j使得:
a = i*X,b = j*X
又因为c = a % b 所以存在整数k使得:
c = a-k*b = i*X - k*j*X = (i-j*k)*X
即X也是c的公约数,然后a = b; b = c;
如此循环,总有b = k*a的时侯,这时b就是最大公约数.
设最大公约数为X,则存在整数i,j使得:
a = i*X,b = j*X
又因为c = a % b 所以存在整数k使得:
c = a-k*b = i*X - k*j*X = (i-j*k)*X
即X也是c的公约数,然后a = b; b = c;
如此循环,总有b = k*a的时侯,这时b就是最大公约数.
int a=2; int f(int a); {return (a)++;} main() {int s=0; {int
#include int func(int a,int b) { int c; c=a+b;return c; } ma
#include int max(int a,int b,int c){\x05a=a>b?a :b ;\x05retu
c语言分数加减法#include int ggg(int a,int b) { int r; while(r!=0) {
c语言这段程序看不懂int fun(int a,int b,int c){ int t; t=(a>b)?(b>c?b:
class A{int i,j;public:static int x;public:A(int a = 0,int b
英语翻译#include#includevoid Euclid(int a,int b){int r;r=a%b;if(
void fun(int *a,int n) { int i,j,k,t; for(i=0;i
#include func(int a,int b) {int c; c=a+b; return c;} main()
#include int gcd(int m,int n) { if(m%n==0) printf("%d\n",n);
有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=
func(int a,int b) {int c; c=a+b; return(c); } main() {int x=