当前位置: 代码迷 >> 综合 >> 【C语言刷题】之最大公因数,最小公倍数,10个数升序排序,找素数
  详细解决方案

【C语言刷题】之最大公因数,最小公倍数,10个数升序排序,找素数

热度:25   发布时间:2024-01-11 06:04:19.0

这里是每日刷题,每一个不刷题的日子,都是对生命的辜负,今天也是为未来奋斗的一天呢!

文章目录

  • 1. 10个数升序排序
  • 2.最大公因数与最小公倍数
  • 3.找素数
  • 总结


1. 10个数升序排序

使用的方法是基础的冒泡排序法,这个方法有固定的公式,适用于一些简单的排序题。套用两层循环,首先,确定循环的次数外层是比较的轮数,如果是10个数比较,比较次数就为9轮。内层是一轮比较的次数,每一轮为9-i-1次,第一轮就是9-0-1=8次,第二轮为9-1-1=7次,以此类推。如何比较呢,如下代码,借用中间变量temp,如果前面的数小与后面的数,那就得交换它们的位置。交换数组位置的代码固定,大家记下来练熟了就好啦。
在这里插入图片描述

2.最大公因数与最小公倍数

方法为,x对y求余数,之后把y的值赋值给x,将余数赋值给y,直至余数为0,所得的x就是最大公因数。最小公倍数为(x与y的积/最大公倍数),所以,求出来最大公因数是解题的关键。
在这里插入图片描述

3.找素数

素数,除1和它本身,其余所有数都不能整除的数。所以,里层的循环需判断2到i-1之间的数是否能被整除即可,若有被整除的数,就用continue跳出本次循环。本题用了sqrt()函数求平方根可以减少循环的次数,为什么可以在本题使用这个函数呢?大家思考一下,比如100,他的平方根是10,优化代码。需要注意的是,100-200是素数的数,直至循环结束自动跳出,到最后怎么打印呢?如下代码,在本题中,可以用一个变量作为标志,定义flag为1,若它能被整除,改其值为0,只有素数没通过这个if语句,所以只有素数再循环结束时flag值仍为1.
在这里插入图片描述



总结

今天的题目就到这里啦,我们明天继续!一起升级呀!

  相关解决方案