为什么求素数的时候到那个数的平方根就可以了呢

lingjin520 2012-06-04 07:57:12
为什么求素数的时候到那个数的平方根就可以了呢
...全文
998 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ISV多多米 2014-06-21
  • 打赏
  • 举报
回复
引用别人的回答,很有道理: 因为如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。
博诺那 2012-06-05
  • 打赏
  • 举报
回复
可以减少循环次数,素数是因子为1和本身, 如果数c不是素数,则还有其他因子,其中的因子,假如为a,b.
其中必有一个大于sqrt(c) ,一个小于sqrt(c) ,参考语句如下:
for(i=2;i<sqrt(c);i++)
{if(c%i==0)
printf("不是素数");
}
jiandingzhe 2012-06-05
  • 打赏
  • 举报
回复
因为a*b = b*a
tongzhipeng5699 2012-06-04
  • 打赏
  • 举报
回复
上面手误
如果一个数不是素数, 那它除了1和他本身一定还有别的约数,假如这个数是num

附这样做的目的是为了提高效率,减少循环次数
tongzhipeng5699 2012-06-04
  • 打赏
  • 举报
回复
如果一个素还是素数 那它除了1和他本身一定还有别的约数,假如这个数是num
num=m*n 一定可以分解为两个整数相乘
设一个命题 ,num可以分解为两个数相乘且这两个数都大于num在平方根
m>sqrt(num) n>sqrt(num) 根据数学知识可以知道m*n>num 这与命题相反,所以命题是假的
所以合数一定至少有一个不大于sqrt(num)约数,只要找到这个数就可以了。

69,396

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧