如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
int flag=0
if(m==2){ //先判断是不是2
flag=1
}
else{
for(int i=2i<=sqrt(m)i++){
flag=1
if(m%i==0){ //不是素数
flag=0
break
}
}
}
return (flag==1)?m:-1//判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
#include<stdio.h>
#include<math.h>
intmain()
{
intx,i,j=0,k
for(x=101x<=200x++)
{
for(i=2,k=0i<=sqrt(x)i++)
if(x%i==0)
{
k++
break
}
if(k==0)
{
printf("%d",x)
j++
}
}
printf("\n100到200之间有%d个素数\n",j)
}
扩展资料
100->200之间的素数的个数,以及所有的素数
#include<stdio.h>
#include<math.h>
intmain()
{
inta,m,k,i
a=0
for(i=101i<=200i++)
{
for(k=2k<ik++)
if(i%k==0)break
if(k>=i)
a++
}
printf("%d\n",a)
for(i=101i<=200i++)
{
for(k=2k<ik++)
if(i%k==0)break
if(k>=i)
a++
if(k>=i)
printf("%d",i)
}
printf("\n")
return0
}
在C语言中求素数有很多种方法。刚入门的话,最基本的就是根据素数的定义来判断一个数是不是素数。要判断一个数n是不是素数,就用一个循环,从2一直到n -1,如果都不能整除n,那么n就是一个素数,否则就不是素数。改进一点的方法就是只要判断到n/2就可以了。再高效一点的办法,就只要判断到根号n就可以了。判断的依据是相同的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)