微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 查找素数?

要查找N是否是素数,我们只需要查找小于或等于sqrt(N)的所有数字.这是为什么?我正在编写一个C代码,以便理解背后的原因.

解决方法

N是素数,如果它是一个正整数,它可以被两个正整数1和N整除.由于一个数除数不能大于该数,所以产生一个简单的原语测试:

>如果大于1的整数N不能被范围[2,N-1]中的任何整数整除,则N是素数.否则,N不是素数.

但是,修改此测试以使其更快速度将是非常好的.所以让我们进行调查.

请注意,N的除数成对出现.如果N可以被M除数,那么也可以被N / M整除.例如,12被6除以,并且也是2.而且,如果M> = sqrt(N),那么N / M <= sqrt(N). 这意味着如果小于或等于sqrt(N)的数除以N,则没有大于sqrt(N)的数除N(除了1和N本身之外),否则会出现矛盾. 所以我们有一个更好的测试:
>如果大于1的整数N不能被[2,sqrt(N)]范围内的任何整数整除,N不是素数.

如果您考虑上述推理,您应该看到通过此测试的一个数字也会通过第一个测试,而该测试失败的数字也将在第一次测试中失败.因此,测试是相当的.

原文地址:https://www.jb51.cc/c/113540.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐