质数判断
质数的分布具有特点:
经过证明可以得到,(大于等于5的)质数一定和6的倍数相邻,一定是6x-1或6x-1。利用这种特性。可以对整数进行筛选,只判断那些是6x-1或6x-1的整数是否为质数。
证明过程如下:
令x≥1,将大于等于5的自然数表示如下: ······6x-1,6x,6x+1,6x+2,6x+3,6x+4······(相邻6个数为一组)
在以上的数字中,6x、6x+2和6x+4是偶数,一定不是质数;6x+3可以分解为3(2x+1),不是质数,因此质数只能是6x-1和6x+1。
1 public static boolean isPrime(int n) { 2 if (n <= 3) { 3 return n > 1; 4 } 5 // 只有6x-1和6x+1的数才有可能是质数 6 if (n % 6 != 1 && n % 6 != 5) { 7 return false; 8 } 9 // 判断这些数能否被小于sqrt(n)的奇数整除 10 int sqrt = (int) Math.sqrt(n); 11 for (int i = 5; i <= sqrt; i += 6) { 12 if (n % i == 0 || n % (i + 2) == 0) { 13 return false; 14 } 15 } 16 return true; 17 }
没有什么能阻止我对知识的追求!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?