今天分享一个C语言简单小程序:输出100—200之间的素数
我用了一个稍微能提高时间效率的方法就是用到了 sqrt()函数,至于为什么是sqrt就可以了,我后面会讲到。
sqrt是开方函数的意思
#输出100-200之间的素数
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i, j, n = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j < sqrt(i); j++)
{
if (i%j == 0){
break;
}
}
if (j>sqrt(i))
{
printf("%d\t",i);
}
}
printf("\n");
system("pause");
return 0;
}
首先我讲下为什么要用到sqrt()我说下我个人的想法,你可以这样想,假设一个数i=a*b,如果a>b则b<sqrt(i),则你在判断一个数是否为素数时你可以把上限设为sqrt(i),外层for循环控制100-200数的判定,内层for循环控制每个数的判定,如果你在2-sqrt(i)之间找到一个j能整除i则就不需要在往sqrt(i)后面找了他就不是素数,如果没找到则那个j,则出内层for循环后i就一定是素数。因为i如果不是素数那他一定有一个大于sqrt(i)和小于sqrt(i)的数,所以找不到那个小的数,那他就一定是素数了,仔细想想还是很好理解的,虽然我开始也想了很久。