项目:判断一个数是否是素数
素数:只能被1或自身整除的数为素数
算法:使用2-n-1的数通过循环依次除n,判断
int i = 0;//找出100-200之间的数备用
for (int i = 100; i <= 200; i++)
{
int a = 0;//使用2-(n-1)的数依次除
int flag = 0;//定义一个flag变量便于判断是否为素数
for (a = 2; a <= i - 1; a++)
{
//重置flag的值,便于下一次循环判断
if (i % a == 0)
{
flag = 0;
break;//主意break会直接结束当前循环
}
else
{
flag++;
}
}
if (flag != 0)//如果flag不为0那么i为素数------------有能整除的数flag便为0
{
printf(" %d", i);
}
}
return 0;
}
输出结果:
代码优化:(提高代码的效率、可靠性和可维护性)
1.偶数不可能是素数,因此在初始读取100-200数时可将偶数过滤掉
2.素数如果能写成m=a*b的形式,那么a与b之间的一个数必然<=sqrt(m)因此只需要判断小于等于m开平方的数
代码如下:
#include <stdio.h>
#include <math.h>#调用sqrt函数
int main()//判断并打印100-200之间的素数
{
int i = 0;//找出100-200之间的数备用
for (int i = 101; i <= 200; i+=2)
{
int a = 0;//使用2-(n-1)的数依次除
int flag = 0;//定义一个flag变量便于判断是否为素数
for (a = 2; a <=sqrt(i); a++)
{
//重置flag的值,便于下一次循环判断
if (i % a == 0)
{
flag = 0;
break;//主意break会直接结束当前循环
}
else
{
flag++;
}
}
if (flag != 0)//如果flag不为0那么i为素数------------有能整除的数flag便为0
{
printf(" %d", i);
}
}
return 0;
}