素数:又称质数,只能被1和自身除开的数就是质数
- 试除法就是让它在计算中除以除过1和小于它本身的之外其它的数
- 在非素数的因子中,肯定有一个数小于等于非素数的开平方(这里可以用在代码中循环的判断条件)sqrt()开平方函数,数学库函数,头文件math.h
- 偶数不可能是素数
举例代码
int main()//试除法
{
int a = 0;
int count = 0;
for (a = 100; a <= 200; a++)
{
int d = 0;
for (d = 2; d < a; d++)//镶嵌循环,对2到他本身前一位进行计算
{
if (a % d == 0)//等于0,可以整除,跳出循环下一个数字
break;
}
if (d == a)//跳出来发现相等,直接打印
{
printf("%d ", a);
count++;//累计打印次数
}
}
printf("\ncount=%d\n", count);
return 0;
}
优化后
#include<math.h>
int main()//试除法优化后,利用了数学函数sqrt,开平方函数
{
int a = 0;
int count = 0;
//for (a = 100; a <= 200; a++)//这里还可以优化,因为偶数不可能是素数
for(a=101;a<200;a+=2)//直接跳过偶数
{
int d = 0;
for (d = 2; d <=sqrt(a); d++)//镶嵌循环,对2到他本身前一位进行计算
{
if (a % d == 0)//等于0,可以整除,跳出循环下一个数字
break;
}
if (d>sqrt(a))//这种就是没有因子,直接打印
{
printf("%d ", a);
count++;//累计打印次数
}
}
printf("\ncount=%d\n", count);
return 0;
}