展开全部
楼上的还可以具体一些,其实非常简单,如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
int flag=0;
if(m==2){ //先判断是不是2
flag=1;
}
else{
for(int i=2;i<=sqrt(m);i++){
flag=1;
if(m%i==0){ //不是素数
flag=0;
break;
}
}
}
return (flag==1)?m:-1; //判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
int flag=0;
if(m==2){ //先判断是不是2
flag=1;
}
else{
for(int i=2;i<=sqrt(m);i++){
flag=1;
if(m%i==0){ //不是素数
flag=0;
break;
}
}
}
return (flag==1)?m:-1; //判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
展开全部
算到算数平方根,这样做是为了提高效率啊,如,求121是不是素数,你不用去用121除以2到120(这样会做119次除法计算,这样效率就低了)。。。你算到它的算数平方根还没有找到它的一个因数,这就可以说它是素数了,
这是有人在数学上证明过了的
这是有人在数学上证明过了的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想下假如对8取余8/2==4,5以后的数字能整除8吗,为了提高效率,只要到4就行了,其实你理解错了,哪是这一句是判断方法啊,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=2;i<m/2;i++)
{
if(m%i==0)
{
break;
}
}
{
if(m%i==0)
{
break;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询