int GCD1(int a,int b)//相减法求最大公约数
{
int min,max;
min=a;
max=b;
if(min>max)
{
max=a;
min=b;
}
while(max-min)
{
max=max-min;
if(min>max)
{
max=max+min;
min=max-min;
max=max-min;
}
}
return min;
}
int GCD2(int a,int b)//辗转相除法求最大公约数
{
int min,max;
min=a;
max=b;
if(min>max)
{
max=a;
min=b;
}
while(max%min)
{
max=max%min;
if(min>max)
{
max=max+min;
min=max-min;
max=max-min;
}
}
return min;
}
int GCD3(int a,int b)//穷举法求最大公约数
{
int min,max;
min=a;
max=b;
if(min>max)
{
max=a;
min=b;
}
for(int i=min;(max%i)&&(min%i);i--);
return i;
}
下面就说一下我遇见的关于gets()函数的使用时要注意的一点
#include <string>
void main()
{
char t[30];
int a[9];
printf("请输入你要求最小公倍数的数据的组数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
gets(t);
//遍历字符数组t
}
}
问题:在输入一个整数时要按回车键确认输入结束后,第一个gets()函数将输入存入字符数组中时总为空。
答:在输入一个整数时要按回车键确认输入,gets()函数将输入存入字符数组中时也是以回车键确认输入完成;
所以gets()函数将整数输完后确认的回车键当做了第一个gets()函数的结束;所以第一个gets()函数将输入存入字符数组中时总为空。
解决方法: 在整数输完后再调用一次gets()函数;
#include <string>
void main()
{
char t[30];
int a[9];
printf("请输入你要求最小公倍数的数据的组数:");
scanf("%d",&n);
gets(t);
for(int i=0;i<n;i++)
{
gets(t);
//遍历字符数组t
}
}