1.求最大公约数——暴力求解
最大公约数:即两个数据中公共约数的最大者。
如何求两个数的最大公约数呢?比如 24 18 18 和 6
思考:两个数的最大公约数,是不是最大就应该是,两个数之中的较小值,比如 24和18之中的18,或者18和6的最大公约数就是6;24和18之中的18作为较小者不是24的因数,那么就可以遍历18-1,找到的第一个24和18的公共因数是不是就是我们的最大公约数了。
附上源码大家可以试一下:
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int min = (a > b ? b: a);
while (1)
{
if (a % min == 0 && b % min == 0)
{
break;
}
else
{
min--;
}
}
printf("%d是%d和%d的最大公约数\n", min, a, b);
return 0;
}
这种方法是最容易想到但是是最暴力的,接下来介绍第二种方法。
2.求最大公约数——辗转相除法
辗转相除法之所以有效是因为其基于一个核心原理,即:
两个数的最大公约数等于其中较小的数字和二者之间余数的最大公约数
附上源码大家体验效果:
int main()
{
int a = 0;
int b = 0;
int k = 1;
scanf("%d %d", &a, &b);
while (k = a % b)
{
a = b;
b = k;
}
printf("%d是最大公约数\n", b);
return 0;
}
3.判断闰年(两个条件满足)
闰年:4年一闰,100年不闰,400年闰
剥离出两个条件
1.闰年的年份数要能被4整除但是不能被100整除
2.能被400整除
附上源码大家可以体验
int main()
{
int year = 0;
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
printf("%d是闰年\n", year);
}
else
{
printf("%d不是闰年\n", year);
}
return 0;
}
最近两篇题目是C语言开篇比较基础的题目大家可以试一下,欢迎指正。