java判斷質數
㈠ 用java語言判斷一個數是不是質數
下面是我用JavaScript寫的素數函數,供參考,大同小異
PrimeA=function(n,nth){/* 小於n的素數表
參數nth 指定返回第n個素數
*/
//vart0=Time.now5();
/*
方法1:利用isPrime 廢棄!
vart=[];
for(vari=2;i<n+1;i++){
if(isPrime(i)){
t.push(i)
}
}
consolelog('方法1:耗時:'+(+Time.now5()-(+t0)));
returnt
*/
//方法2:利用篩法
varp=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59];//自己往後補充,越多越好,可以加快檢測小素數的效率
if(nth&&n<=669){
returnp[n-1]
}
if(!nth&&n<2){
return[]
}
if(n<=5000&&!nth){
for(vari=0;i<100;i++){
varj=p.indexOf(n-i);
if(j>-1){returnp.slice(0,j+1)};
}
returnp
}
varm=nth?Math.ceil(n*Math.log(n)+1000):n; //pn∼nln(n)
// for(vari=5001;i<=m;i+=2){
vari=5001;
while(i){
vart=Math.floor(Math.sqrt(i)),pl=p.length;
for(varj=0;j<pl;j++){//p.length
if(i%p[j]==0){
break
}elseif(p[j+1]>t){
p.push(i);
if(nth&&pl==n-1){
returni
}
break;
}
}
if(!nth&&i>=n-1){
returnp
}
i+=2;
}
returnp
//方法3:Wilson測試
}
㈡ java怎麼判斷一個數是不是一個質數
java">/* 判斷一個數是否是素數(質數) */
public boolean isPrime(int number){
for (int i = 2; i < number; i++){
if(number%i == 0){
return false;
}
continue;
}
return true;
}
㈢ Java語句判斷一個數是不是質數。。。只寫判斷條件就好。。
質數指能被1和自身整除,這個不能僅僅一個判斷條件解決,判斷一個數是不是質數你還要判斷1到這個數的所有數,必須要循環
int num=7;
boolean shu=false;
for(int i=1;i<num;i++){
if(num%i==0){
shu=false;
break;
}
shu=true;
}
㈣ java,判斷一個數是不是質數的程序
這是求素數中為了提高效率的一個的技巧
其實寫成Math.sqrt(n)最好
為了提高效率,不用一定計算到n.
當然計算到n是沒錯的
-----------補充-----------
除去自身和1,能夠整除一個數的最小值應該是2,最大值不會超過這個數的一半,所以不存在一個大於這個數一半的數能夠整除這個數,所以在樓主的方法中只要計算到n/2就好了..
㈤ 用 java 怎麼判斷一個數是否為質數
應該是有函數吧
建議直接網路搜索
邏輯存在很大的問題,判斷質素的守則是除了本身和1,其他數內都不能將自己整除容,所以樓主你應該做的事情是將你輸入的數循環與2開始到你輸入的數-1的數依次比較,有一次整除沒有餘數就說明不是素數。按照你的代碼修改應該是:
bool flag=false;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
flag=true;
break;
}
}
接下來判斷flag的值,如果是 true代表不是質數,flase的話代表是質數
㈥ java怎麼判斷素數
1、目前使用較有效的方法是試除法。用試除法判斷一個自然數a是不是素數時,用版各個素數權從小到大依次去除a,如果到某一個素數正好整除,這個a就可以斷定不是素數;如果不能整除,當不完全商又小於這個素數時,就不必再繼續試除,可以斷定a必然是素數。
2、素數又稱質數。一個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。
3、素數是與合數相對立的兩個概念,二者構成了數論當中最基礎的定義之一。基於質數定義的基礎之上而建立的問題有很多世界級的難題,如哥德巴赫猜想等。目前為止,人們未找到一個公式可求出所有素數,所以還沒有固定的判斷公式。
4、一般記住100以內的素數就可以了。有2、3、5、7、11、13、19、17、23、29、37、31、41、47、43、53、59、61、71、67、73、83、89、79、97,一共25個。
㈦ java怎樣判斷一個數是不是質數
由於大於2的質數一定是奇數(奇數又不一定都是質數),所以,在判斷一個自然數是不是質數時,首先要看它是奇數還是偶數。如果是大於2的偶數,這個數肯定不是質數,而是合數;如果是奇數,那就有可能是質數。在這種情況下,一般使用以下兩種方法:
(1)查表法:
主要是指查「質數表」。編制質數表的過程是:按照自然數列,第一個數1不是質數,因此要除外,然後按順序寫出2至500的所有自然數,這些數中2是質數,把它留下,把2後面所有2的倍數劃去,2後面的3是質數,接著再把3後面所有3的倍數劃去,如此繼續下去,剩下的便是500以內的全部質數。
最早使用上述方法來尋求質數的人,是古代希臘數學家埃拉托斯特尼,由於他在開始時,先把自然數寫在一塊蠟板上,把不是質數的數(合數)分別刺上一個孔,這樣,在蠟板上就被刺上了許多象篩子一樣的孔,後來,大家就把這種尋求質數的方法叫做「篩法」。
這類的質數表還可以編製成數字范圍更大一些的,如1000以內質數表等。判斷一個自然數是不是質數,如在表所規定的數字范圍內,即可用查表的方法進行判斷。
(2)試除法:
在手頭上沒有質數表的情況下,可以用試除法來判斷一個自然數是不是質數。例如判斷143、179是不是質數,就可以按從小到大的順序用2、3、5、7、11……等質數去試除。一般情況下用20以內的2、3、5、7、11、13、17、19這8個質數去除就可以了。如143,這個數的個位是3,排除了被2、5整除的可能性,它各位數字的和是1+4+3=8,也不可能被3整除,通過口算也證明不能被7整除,當試除到11時,商正好是13,到此就可以斷定143不是質數。
對179試除過程如下:
179÷2=59……2
179÷3=66……1
179÷5=35……4
179÷7=25……4
179÷11=16……3
179÷13=13……10
179÷17=10……9
當179÷17所得到的不完全商10比除數17小時,就不需要繼續再試除,而斷定179是質數。這是因為2、3、5、7、11、13、17都不是179的質因數,因此,179不會再有比17大的質因數,或者說179不可能被小於10的數整除,所以,179必是質數無疑。
綜上所述,用試除法判斷一個自然數a是不是質數時,只要用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數;如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數。
㈧ 用java如何寫代碼去判斷質數和合數
首先介紹下:質數是除了本身和1以外,沒有質因數,就是沒有數能夠整除之;合數是除了本身和1以外還有第三個數能整除之。
具體示例代碼如下:
publicclassDemo2{
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
System.out.print("請輸入一個數:");
intnum=scan.nextInt();
intindex=0;//使用一個數來標記是質數還是合數
for(inti=2;i<num;i++){
if(num%i==0){
index++;
}
}
if(index==0){//index等於0表示質數
System.out.println("這是個質數");
}
else{//index大於0表示合數
System.out.println("這是個合數");
}
}
}
需要注意的是:1不算質數也不算合數。
㈨ java判斷質數
質數(素數)就是一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。
可以通過以回下工具類答方法來實現:
public boolean isPrime(int n){
for(int i=2;i<=n/2;i++){
if(n%i == 0)
return false;
}
return true;
}
備註:n/2的作用就是只取出n一半的數,因為任何數都不可能是比它1/2大的數整除的(除了這個數本身)。
㈩ Java 判斷質數的方法
純手打!!!不懂就抄恢復問我!
希望能幫到你!
public static void isPrime() {
int count = 0;// 統計所有的質數的個數的,計數器
int num = 0;// 要判斷的數
do {
int temp = 0;// 判斷有幾個整除數
for (int a = num; a >= 1; a--) {
if (num % a == 0) {
temp++;
}
}
if (temp == 2) {// 只有兩個整除數的數就是質數
System.out.print(num + " ");
count++;// 有一個質數了,那麼計數器就要加1
if (count % 10 == 0) {// 那麼就要換行
System.out.println();
}
}
num++;// 一個數判斷完了,換第二個數
} while (count <= 100);
}