c语言为什么判断素数用sqrt ?拜托各位大神

scanf("%d",&n);k=sqrt(n)for(i=2;i<=k;i++)if(k%i==0)bresk;如上:为什么不直接判断n%i,而是2-sqrt(n)这个... scanf("%d",&n); k=sqrt(n) for(i=2;i<=k;i++) if(k%i==0)bresk; 如上:为什么不直接判断n%i,而是2-sqrt(n)这个范围?(主要是为什么可以平方根) 展开
 我来答
Mio丶271
2014-08-17 · TA获得超过157个赞
知道答主
回答量:141
采纳率:50%
帮助的人:71.5万
展开全部
你好,我们假设一个数a; 那么a=(a^1/2)*(a^1/2); 如果a不是素数; 那么a有一个因子b a=b*c; 那么a的因子中(b或c)必定有一个是小于等于a^1/2的; 所以判断的时候不用判断到1-a,只需要1-a^1/2; 明白了吧?
创作者kXCX6pE22v
2019-07-22 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.5万
采纳率:26%
帮助的人:1099万
展开全部
k=sqrt(n)
for(i=2;i<=k;i++)
中的k有利于减少无用的循环次数。
因为根据数学推理可知,判断一个数是不是素数不用都除于所有小于此数的数的。只要除数小于该数的平方根就足以判断该数是不是素数了。
这也体现C语言的程序简洁特点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式