C语言实例之求一区间内的素数个数
普通算法
如果一个数是素数,则它只能被1和它本身整除
//如果一个数是素数,则它只能被1和它本身整除
//取flag1为标志如果flag1=2,则该数是素数,同时给count+1,统计素数个数
#include<stdio.h>
#include<math.h>
int main()
{
int n,N, i, j,flag1=0,count=0;
scanf("%d %d",&n,&N);//默认N>n
if(N>=3)
{
for(i=n;i<=N;i++)
{
for(j=1;j<=i;j++)
{
if(i%j==0)
flag1++;//如果i能被j整除,给flag1加1
}
if(flag1==2)
count++;//如果N被整除了2次,给count加1
flag1=0;
}
}
else if (N=2)
{
printf("1");//1到2之间只有2是素数
}
else
{
printf("0");//其余情况下没有素数
}
printf("%d",count);
}
升级版
如果一个数是素数,则它只能被 1 到 该数的平方根 之间的整数整除一次
//如果一个数是素数,则它只能被 1 到 该数的平方根 之间的整数整除一次
//flag1为标志如果flag1=1,则该数是素数,同时给count+1,统计素数个数
#include<stdio.h>
#include<math.h>
int main()
{
int n,N, i, j,flag1=0,count=0;
scanf("%d %d",&n,&N);//默认N>n
if(N>=3)
{
for(i=n;i<=N;i+=2)//偶数一定不是素数,跳过
{
for(j=1;j<=sqrt(i);j++)
{
if(i%j==0)
flag1++;//如果i能被j整除,给flag1加1
}
if(flag1==1)
count++;//如果N被整除了2次,给count加1
flag1=0;
}
}
else if (N=2)
{
printf("1");//1到2之间只有2是素数
}
else
{
printf("0");//其余情况下没有素数
}
printf("%d",count);
}