c语言中c语言求素数的算法时为什么要开根号

面试题(4)
设n为合数,n=ab,则a,b之中总有一个小于或等于根号n.(很明显不可能两个数同时小于根号n或大于根号n)
也就是说合数有大于根号n的因数存在,则必有一个小于根号n的因数与之对应。再换个说法,如果一个数没有小于根号n的因数,则不能有大于根号n的因数。所以只检查是否有小于或等于根号n的因数即可。
在说说为什么是2到根号n这个点,而不是根号n-1以及更小或根号n+1以及更大,如果是这种情况那就根号n这个点漏判,所以往往很多情况相等时很好的契合点。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4922次
排名:千里之外
原创:32篇
(2)(31)(2)(1)(4)c语言中根号怎么打
老大c语言里面开方是不用根号的你现在程序上面上面
写上#include
然后条用sqrt()函数就可以开方了sqrt是开方pow(x,n)是开N次方 望采纳
为您推荐:
其他类似问题
扫描下载二维码在C语言中求素数时,为何只需要出从2 到 根号N
fkttoxm292
这么想吧:一个数N,它是根号N的平方,那么如果它有其他约数的话,假设为A,B(约数肯定要成对出现的)必然有一个大于根号N,另一个小于根号N(显然如果都大于根号N,那相乘结果会大于N;反之会小于N),所以在找的时候,只需找到根号N即可,大于根号N的那些肯定跟小于N的成对匹配,如果小于根号N的约数都没有,显然也没有大于根号N的数与它匹配了
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 c语言求素数 的文章

 

随机推荐