求两个正整数N和M的最大公约数
int calcGcd(int N,int M)
{
int mid;
(M >= N)?(mid = N):( mid = M) ;
for (int i = mid; i >= 1;i--)
{
if(N%i==0 && M%i==0 )return i;
}
}
利用辗转相除法求最大公约数
int clacGld(int N ,int M)
{
if( N >= M)//把大的值用M存起来,N存放小值
{
int temp = M;
M = N;
N = temp;
}
while(M % N)
{
int temp = N;
N = M % N;
M = temp;
}
return N;
}
辗转相除法求M,N的最大公约数基于的原理如下。
M,N假设M>=N,M = aN + b。gcd(M,N) = gcd(N,b)
将一段字符串,两头的空格全部去掉,两个字符之间保留一个空格。编程中不能用额外的数组
int main()
{
//char str[] = "a_____b_____c_____d_____e";
char str[] = {" a b c d e "};
bool flag = false ;
int count = 0;
for(int i = 0 ; i < sizeof(str) - 1;i++)
{
if(str[i]!=' ')
{
str[count++] = str[i];
flag = true;
}
else if (str[i]==' ' && flag==true)
{
str[count++] = str[i];
flag = false;
}
}
if (count > 0 && str[count - 1] == ' ')
{
str[count - 1] = '\0';
}
else
{
str[count] = '\0';
}
cout<<str<<endl;
return 0;
}