几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。
欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。
1.辗转相除法求最大公约数
#include <stdio.h>
int gcd(int m,int n);
int main(void)
{
int m,n,t;
scanf("%d %d",&m,&n);
if(m<n)
{
t=m;
m=n;
n=t;
}
n=gcd(m,n);
printf("%d",n);
return 0;
}
int gcd(int m,int n)
{
int r;
r=m%n;
if(r==0)
{return n;}
else
{
gcd(n,r);
}
}
————————————————
版权声明:本文为CSDN博主「孤木不成林」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ychhh/article/details/80305197
2 阶乘和斐波那契数列,字符串长度
#include <stdio.h>
// 1 2 3 4 5 6 7 8 9
// 1 1 2 3 5 8 13 21 34
int jiechen(int n);
int JC(int n);
int FBNQ1(int n);
int FBNQ2(int n);
int Len(char *str);
int main()
{
/*printf("%d\n",jiechen(5));*/
/*printf("%d\n",JC(5));*/
/*printf("%d\n",FBNQ1(5));
printf("%d\n",FBNQ2(8));*/
printf("%d\n",Len("12345"));
return 0;
}
int jiechen(int n)
{
int sum = 1;
int i;
for(i=n;i>=1;i--)
sum = sum * i;
return sum;
}
int JC(int n)
{
if(n == 1)
return 1;
return n * JC(n - 1);
}
int FBNQ1(int n)
{
int i;
int v1 = 1,v2 = 1,v3;
if(n == 1 || n == 2)
return 1;
for(i = 3;i<=n;i++)
{
v3 = v1 + v2;
v1 = v2;
v2 = v3;
}
return v3;
}
int FBNQ2(int n)
{
if(n == 1 || n == 2)
return 1;
return FBNQ2(n-1) + FBNQ2(n -2);
}
int Len(char *str)
{
if(*str == '\0')
return 0;
str++;
return Len(str) + 1;
}