素数:只能被1和它本身的数整除

1.试除法

#include<stdio.h>
int main()
{
int i;
for(i=100;i<=200;i++)
{
int j;
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(j==i)
{
printf("%d ",i);
}
}
return 0;
}

解析:

1.首先,要产生一堆100-200数字的数字,即

for(i=100;i<=200;i++)

2.对于判断该数i是否为素数,如果是,需要我们知道从2到i-1(也就是j)的范围内都不能有能被能整除的可能,直到到达它本身才行,

即如果这个数,如果能被整除则跳出这个小循环

    for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}

这里存在两种情况,一种是不是被本身整除,一种是到了本身的那个数 被本身整除的,如果是被本身整除的 我们就打印出来

if(j==i)
{
printf("%d ",i);
}

2.优化

主要是​因为如果是素数,不可能存在i=a*b的多种答案,如果有则不是素数

#include<stdio.h>
#include<math.h>
int main()
{
int i;
for(i=100;i<=200;i++)
{
int j;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
printf("%d ",i);
}
}
return 0;
}

3.优化

由于偶数不是素数,则可以直接将偶数的部分排除 只算奇数

for(i=101;i<=200;i+=2)