例1:求2-100之间的所有素数,并输出。
判断某一个数是素数的方法为:设某一个数为a,a除了能表示为他自己和1的乘积以外,不能表示为任何其他两个整数的乘积。例如。15就不是素数,13是素数。
#include <stdio.h>
#include <math.h>
main()
{
int n, i, j, flag, x = 0;
for(i = 2; i <= 100; i++)
{
flag=1;
j=2;//遍历2以上N的平方根以下的每一个素数,是不是能整除N;
n = (int)sqrt((double)i);
while(flag && j<=n)
{
if(i%j ==0)//表明当前待验证的数字(i)能被j整除,当然不是素数。
{
flag=0;//标志位设置为0,表示该数(i)不是素数
}
j++;
}
if(flag)//如果该标志位是1,表示是素数,否则不是素数
{
printf("%d, ", i);
x++;
if(x%5 == 0)
{
printf("/n");
}
}
}
}
2.2.5 break和continue在循环结构中的应用
1、break语句在循环语句中,其作用是跳出本层循环,转去执行循环语句后面的程序。使用break语句可以使循环语句有多个出口,使程序避免了一些不必要的的重复,提高了程序效率。
例1:
for(n=0,s=0;n<10;n++)
{
scanf(“%d”, &x);
if(x<0)
{
break;
}
s += x;
}
例2:
n=0;
s=0;
while(n<10)
{
scanf(“%d”, &x);
if(x<0)
{
break;
}
s += x;
n ++;
}
例3:
n=0;
s=0;
do
{
scanf(“%d”, &x);
if(x<0)
{
break;
}
s += x;
n ++;
}while(n<0);
2、continue语句只能用在循环结构中,其作用是结束本次循环,即不再执行循环体中continue语句之后的语句,而是立即转入对循环条件的执行与判断。
例1:
for(n=0, s=0; n<10; n++)
{
scanf(“%d”, &x);
if(x<0)
{
continue;
}
s += x;
}
例2:
int x, n=0, s=0;
while(n<10)
{
scanf(“%d”, &x);
if(x<0)
{
continue;
}
}
例3:
int x, n =0, s = 0;
do
{
scanf(“%d”, &x);
if(x<0)
{
continue;
}
s += x;
n ++;
}while(n<10);
3、break和continue的区别
continue只结束本次循环,而不是终止整个循环的执行。
break语句则是结束整个循环过程,不再判断执行循环条件是否成立。
2.2.6 goto语句
不要学。不符合C语言的特点。知道就可以了。
main()
{
int sum = 0, i =1;
loop: sum = sum + i;
i ++;
if(i<=100)
{
goto loop;
}
printf(“sum=%d”, sum);
}