快速判断一个数字是否是素数

浅浅的花香味﹌ 2022-08-04 04:07 295阅读 0赞
  1. //num可以达到10^9数量级甚至更大,比一般的判断方法快很多
  2. </pre><pre name="code" class="cpp">bool isPrimeNum(int num)
  3. {
  4. if (num <= 2)
  5. {
  6. return num == 2;
  7. }
  8. if (num % 2 == 0)
  9. {
  10. return false;
  11. }
  12. int iSqrt = sqrt(num);
  13. for (int i = 3; i <= iSqrt; i+=2)
  14. {
  15. if (num % i == 0)
  16. {
  17. return false;
  18. }
  19. }
  20. return true;
  21. }

PS:

求 (n−1)! mod n

如果n为合数,显然答案为0.

如果n为素数,那么由威尔逊定理可得答案为 n−1

注意有个trick为 n = 4

发表评论

表情:
评论列表 (有 0 条评论,295人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c#判断一个是否素数

    素数是只能被1或本身整除,且不能为其他两个整数的乘积。1、2、3本身就是素数,判断一个数是否为素数,只需要用这个值依次除以2到它的开方数,如果其中有一个数可以整除,那么该值不为