1.素数即质数,是指大于一的自然数中,除了一和它本身以外不再有其他因数的自然数。若要打印3到100的素数,则要判断3到100的每个数是不是素数。那么则需要两层循环,第一层即从3到100,第二层则要判断从1到这个数之间有没有它的因数,那么首先展示大部分人首先会想到的方法、
#include<stdio.h>
int main()
{
int i,j;
for(i=3;i<=100;i++)
{
for(j=2;j<i;j++)
{
if(i%j!=0)
printf("%d",i);
}
}
}
按照这种方式则会打印如下结果:
那么为什么会出现如下情况,可以举其中一个数说明,例如32,那么从2开始到31判断是否能被32整除,2可以,不进行任何操作,3可以,则打印32,4可以则不进行任何操作,5不可以,则打印32,6不可以,则打印32,以此类推,一个数会被重复打印许多次,并且还有一些不是素数的数。
那么如何让打印出的只是素数且只打印一次,这时就需要用到break语句,如果一个数可以被除了1和它本身之外的数整除,说明它不是素数,此时利用break语句跳出循环,判断下一个数。但是如果保证只打印一次,我们可以知到,如果直到这个数前一个数还不能被其整除,即当i%(i-1)!=0,此时j=i-1,那么可以写出如下代码。
#include<stdio.h>
int main()
{
int i,j;
for(i=3;i<=100;i++)
{
for(j=2;j<100;j++)
{
if(i%j==0)
break;
if(j==i-1)
printf("%d ",i);
}
}
}
如此即可