题目描述:编写程序找出100~200之间的个素数,并输出所有素数。
素数的定义:在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
所以本题的思路是将一个数除以2到本身减1,不过我们只需要将一个数除以2到本身的开根号即可,这样更加提高程序的效率。
# include <stdio.h>
# include <math.h>
int main()
{
int i, m, k, h = 0, leap = 1;
for (m=100; m<=200; m++)
{
k = (int)sqrt(double(m));//当一个数若不能被从2开始,到自身开根号为止这个范围内的整数整除,它就是素数了。
//这样减少运算次数,提高了程序效率
for (i = 2; i<=k; i++)
{
if (m%i == 0)
{
leap=0;
break; //此处的break终止的是整个for循环(注:在for中的if中如果执行了break就终止了整个for循环)
}
}
if (leap)
{
printf("%-4d", m); //三位数,加多一个空格
h++;
if (h % 10 == 0) //够十个,过下一行
printf("\n");
}
leap = 1; //leap重新赋值1
}
printf("\n");
}
运行环境:vs2010
运行结果: