【Java 判断素数的几个方法】简单理解
生活随笔
收集整理的這篇文章主要介紹了
【Java 判断素数的几个方法】简单理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近刷題刷到了包含判斷素數問題的題型,這里寫篇博客來分享下!
首先我們來講下什么是素數
1、素數的概念
- 素數在數學中我們也叫:質數,兩個是一個東西
- 素數:一個大于1的整數,只能被 1 和 自身 整除的的整數,這種整數我們稱為:素數,否則稱為:合數;例如:2,3,5,7,11,13 都是素數
- 補充:大于 2 的所有質數都是 奇數
2、方法一
- 1、我們就是單純的根據素數概念來判斷素數,對于 2 這個素數我們單獨判斷,例如:判斷 5 是否為素數,那我們就根據:5%2,5%3,5%4 求余結果都不為 0 則為素數,否反之亦然。那就是對于給定的大于 2 的自然數,我們用 n%【2,3,…,n-1】判斷結果是否為 0 就好
- 2、 我們再添加一個條件,那就是:大于 2 的所有質數都是 奇數,所以對于從 3 開始每次 +=2 只判斷奇數即可
代碼:
public static boolean isPrime(int n){if (n<=3){return n>1;}for (int i = 2;i<n;i++){if (n%i==0){//不是素數return false;}}return true;}2、方法二
優化
- 不大于根號n的最大的整數還沒有整除n,那么這個n肯定是素數
說明:如果一個大于根號n的整數m能整除n,那么n/m一定是一個小于根號n的一個整數
代碼
public static boolean isPrime(int n){if (n<=3){return n>1;}for (int i = 2;i<=Math.sqrt(n);i++){if (n%i==0){//不是素數return false;}}return true;}2、方法三
孿生素數:孿生素數指的是間隔為 2 的相鄰素數
- 1、當 n>=6,n-1 和n+1 為孿生素數,那么 n 一定是6的倍數
- 2.素數的分布規律:當 n>=5時,如果n為素數,那么 n%6=1∣∣n%6=5,即n一定出現在6x(x≥1)兩側。(就是說大于等于5的素數一定是分布在6倍數的左右兩側,但在6倍數左右兩側的數不一定是素數)
代碼:
public static boolean isP(int num) {if (num <= 3) {return num > 1;}if (num % 6 != 1 && num % 6 != 5) {return false;}int sqrt = (int) Math.sqrt(num);for (int i = 5; i <= sqrt; i += 6) {if (num % i == 0 || num % (i + 2) == 0) {return false;}}return true;}總結
以上是生活随笔為你收集整理的【Java 判断素数的几个方法】简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] label都有哪些作用?并
- 下一篇: java 监听udp_Java实现Udp