c语言素数判断为什么只循环到平方根就行
5个回答
展开全部
素数是 除1和本身外,没有其他因子。
假设 这个数X的 平方根为 a。
证明,比a大的比本身X小的没有比较的必要。
假设 b >a ,且是X的因子,那么一定存在一个c使 c*b =x,且 c<a;
(因为 a*a = X b>a,若c>a,则 b*c>X)
那么判断到c的时候,就知道x不是素数了,所以没有必要往下走了。
假设 这个数X的 平方根为 a。
证明,比a大的比本身X小的没有比较的必要。
假设 b >a ,且是X的因子,那么一定存在一个c使 c*b =x,且 c<a;
(因为 a*a = X b>a,若c>a,则 b*c>X)
那么判断到c的时候,就知道x不是素数了,所以没有必要往下走了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
http://zhidao.baidu.com/question/320326674.html
这儿有你想要的回答
因为如果n可以被一个数整除,那么其中一个数一定小于等于n开方,另一个大于等于n的开方,所以只需要算到这儿,到后面就是多余的了
这儿有你想要的回答
因为如果n可以被一个数整除,那么其中一个数一定小于等于n开方,另一个大于等于n的开方,所以只需要算到这儿,到后面就是多余的了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个数,不可能被比自己一半大的数整除。
简单来说,4x4=16,16不可能被比8大的数整除。
这是数学规律,可以减少一半的循环次数,大大提高程序效率
简单来说,4x4=16,16不可能被比8大的数整除。
这是数学规律,可以减少一半的循环次数,大大提高程序效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个循环只会在有数可以把n整除的时候break,中止掉。你的判断是从2开始的这种判断素数的方法效率太低了点,你去看看一些基础教C语言的书里讲判断素数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询