求素數演算法 Java

2021-07-15 05:19:09 字數 779 閱讀 7916

例如求1000以內的素數:

方法一:定義

素數:除了1和它本身以外不再被其他的除數整數。

public void printprime()

int j=2;

while(j方法二:合數

1 合數定義:指自然數中除了能被1和本身整除外,還能被其他數(0除外)整數的數

2 大於1的自然數,不是質數就是合數。

3 如果n是個合數,則一定存在大於1小於n的整數d1和d2,使得n=d1×d2,且 d1和d2中必有乙個小於或等於√n

思路:大於1的整數中排除合數,剩下的就是素數。

public void printprime()

}if(isprime)

}}

方法三 : 6n±1法

任何乙個自然數,總可以表示成為如下的形式之一:

6n,6n+1,6n+2,6n+3,6n+4,6n+5 (n=0,1,2,…)

顯然,當n≥1時,6n,6n+2,6n+3,6n+4都不是素數,只有形如6n+1和6n+5的自然數有可能是素數。所以,除了2和3之外,所有的素數都可以表示成6n±1的形式(n為自然數)。

思路:構造另一面篩子,只對形如6 n±1的自然數進行篩選。

public void printprime()

for(int j=-1; j<=1; j+=2)}}

} public boolean isprime(int n)

}return true;

}

java求素數的演算法

只能被1和它自己本身所整除的數成為素數或質數,以下為三種求n以內素數的演算法。一 從1至n全部遍歷,當這個數只能被1和n整除它就是素數。列印自然數n以內的素數 param n public void printprime int n 如果是質數,則列印 if isprime 二 篩數法求素數 篩數法...

演算法 求素數

求101到200之間的素數並計算其總數 演算法分析 判斷素數的方法 用乙個數分別去除2到sqrt 這個數 如果能被整除,則表明此數不是素數,反之是素數。1.利用判斷素數的方法我們可以用每個數去除以2到sqrt 該數 但是再用迴圈遍歷的過程中會存在乙個很嚴重的問題。那就是101到200之間非素數也會有...

演算法 求素數

這裡我寫了幾個求素數的方法和大家交流一下 進行窮舉 時間複雜度o n private static boolean primer1 int number return true 使用 n 進行計算 時間複雜度o n private static boolean primer2 int number ...