判断数n是否为素数时,只需看能否被2到根号n之间的数整除,这是为什么?没有别的算法吗?

判断m是否为素数?程序如下:#include<stdio.h>#include<math.h>voidmain(){intm,i,k;scanf("%d",&m);k=s... 判断m是否为素数? 程序如下: #include <stdio.h> #include <math.h> void main() { int m,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)printf("%d is a prime number\n",m); else printf("%d is not a prime numbei\n",m); } 我们都知道:所谓素数,就是除了1和它本身,不能被其他数整除的数。也称作质数。 下面是我自己根据上面的说法自行编的程序,不知道可不可以,还望广大老师指教。谢谢。请看下列程序: #include <stdio.h> void main() { int m,i; scanf("%d",&m); for(i>1,i<m,i++); if(m%i==o) continue; /* 如果用i被m能整除的话,则结束本次循环 */ printf("%d is not a prime number\n",m); else printf("%d is a prime number\n",m); } 展开
 我来答
一微娘恶给TA95
推荐于2017-11-26 · TA获得超过213个赞
知道答主
回答量:97
采纳率:0%
帮助的人:92.4万
展开全部
因为如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。 程序改了下: #include <stdio.h> int main(void) { int m,i; scanf("%d",&m); for(i=2;i<m;i++) { if(m%i==0) break; } if (i < m) printf("%d is not a prime number\n",m); else printf("%d is a prime number\n",m); return 0; }
空jcexrve
2014-11-06 · 超过68用户采纳过TA的回答
知道答主
回答量:132
采纳率:60%
帮助的人:60.9万
展开全部
有几个问题 i没有初始值 for(i>1,i<m,i++); 括号里面用;而不是, 最后一个;去掉 补充: 判断素数 的最优算法就是只判断2到根号n之间的数 如果你要判断2到m-1也是可以的 只是效率上不是最优
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式