循环嵌套
前⾯学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套
下面我们有一个经典的列题来将嵌套引用:
找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。
具体代码如下:
#include<stdio.h>
int main()
{
int i;
for(i=100;i<=200;i++)//循环生成100~200的数
{
for(int j=2;j<i;j++)//循环生成2~i-1的数
{
if(i%j!=0)//不能整除
printf("%d ",i);
break;
}
}
return 0;
}
输出100到200的素数,我们首先得出100到200之间的每个数字,可以使用一个for循环解决。我们要判断一个在100到200闭区间内的数字 i是否为素数的条件就是在2~i-1内不存在能够整除于i的数字,我们可以再次使用循环。
实际上,上述代码的计算量更大,我们可以思考一下发现,只要2~i的开平方内的数字(或者是i/2)不整除就可以了,可以提高效率。
for(int j=2;j<(i/2);j++)//for(int j=2;j<sqrt(i);j++)
{
if(i%j!=0)//不能整除
printf("%d ",i);
break;
在使用这个方法是我们要注意,由于使用了sqrt的开平方函数,我们需要在代码上加上它所对应的头文件:
#include<math.h>