java求素數,java求素數的個數

本文目錄一覽:

java里怎麼實現素數?

import java.util.Scanner;

//質數又稱素數,是指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數

public class PrimeNumber {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);// 掃描器,接收控制台輸入信息

System.out.print(“請輸入一個整數:”);

try {

int num = scan.nextInt();// 取出控制台輸入的信息

if (isPrime(num)) {// 調用isPrime()方法

System.out.println(num + “是素數!”);// 若isPrime()方法返回true,輸出是素數

} else {

System.out.println(num + “不是素數!”);// 若isPrime()方法返回false,輸出不是素數

}

} catch (Exception e) {

System.out.println(“請輸入整數”);// 捕捉異常,若輸入的不是整數,輸出異常

}

}

/**

 * pre

 * 用於判斷一個數是否為素數,若為素數,返回true,否則返回false

 * /pre

 * 

 * @param a

 *            輸入的值

 * @return true、false

 */

public static boolean isPrime(int a) {

boolean flag = true;

if (a  2) {// 素數不小於2

return false;

} else {

for (int i = 2; i = Math.sqrt(a); i++) {

if (a % i == 0) {// 若能被整除,則說明不是素數,返回false

flag = false;

break;// 跳出循環

}

}

}

return flag;

}

}

java求1到n的素數

import java.util.Scanner;

/**

*

* 素數:能被1和他本身整除的數

* 思路,就是我們用一個循環獲得1-n的全部數,

* 然後在裡面的個學會中判斷這個數與他前面的

* 數是不是能整出如果能我們就跳到外部循環的下一個數繼續判斷,

* 如果不能則是素數。我們打印後跳到外部循環的下一條記錄

*

*/

public class PrimeNumber {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println(“請輸入n的值:”);

int n=sc.nextInt();

System.out.println(n+”內的素數為:”);

loop: for (int i = 2; i n; i++) {

for (int j = 2; j i; j++) {

if (i % j == 0) {

continue loop;

}

}

System.out.print(” ” + i);

}

}

}

利用Java編寫應用程序求100以內的全部素數

質數又稱素數。一個大於1的自然數,如果除了1和它自身外,不能被其他自然數整除的數;否則稱為合數。根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。下面是一個java求100之內的素數簡單示例。

public class test {

public static void main(String[] args) {

int i,n,k=0;

for (n = 3; n=100; n++) {     //3~100的所有數

i=2;

while (in) {

if (n%i==0)  break;  //若能整除說明n不是素數,跳出當前循環

i++;

}

if (i==n) {     //如果i==n則說明n不能被2~n-1整除,是素數

k++;             //統計輸出數的個數

System.out.print(i+ “\t “);

if (k %6==0)    //每輸出5個則換行

System.out.println();

}

}

}

}

java中怎麼求素數

首先樓主應該對素數的定義已經清楚了吧?其實就是一個數,如果存在1和它本身以外,有數能整除它,這個數就不是素數.

在這裡,有2個關鍵的變量,我估計解釋一下你就能看得明白這個算法了.

1.關於變量k.變量k的作用是優化整個算法,因為比如要判斷一個數13是不是素數,我們沒必要從2循環到13.只要循環到對13開根號.13開根號大概是3.6多,強轉為int類型後是3.也就是說只要檢查2,3是否能整除13.如果不能,13肯定是一個素數.因為比如48這個數,你前面檢測到被4整除等於12,那麼繼續循環超過Math.sqrt(48)的話,無非就是得到一個反過來的被12除等於4的結果.這個沒有必要.

2.關於變量j.注意點1:j是在最外層的循環體中定義的.這個時候剛定義完,j的值是初始的0.然後j從2開始,一直到小於等於k結束.這裡是控制嘗試整除的循環次數.一旦發現在這個範圍內有數能整除i,那麼就跳出循環.

所以,對於你不理解的那個部分,首先確定一點,程序只要執行到break,就說明這個數是素數.

例如我們這次k = 10,那麼是要從j = 2到10逐一檢測 i 是不是能被 j 整除.當j = 7的時候比如可以整除了,就跳出當前內層循環了.這時候, j 顯然是不大於 k 的,因為只要是中途跳出,因為內層循環(j = 2; j = k; j++)的控制,只要在循環過程中跳出來的,那麼j 肯定 = k.

只有循環到j = 10依然沒有break的話,根據for循環的執行順序,會執行j++,然後去判斷j = k 是否為true,為true則繼續下一次循環,否則循環結束.而在這裡,如果到10還沒有能夠整除的話,j是會在10的基礎上自增的.這時候j就=11了.

那麼if ( j k )就不成立了,則i 不會被輸出.

總結一點:就是如果中途or最後一次循環,找到能整除的數了,那麼因為break的關係,最後就不會執行 j++, 所以j = k的條件是能保證的. 換言之,如果j k (亦即j = k 的取反)表示沒有找到能整除的數.其實j最大也就只能等於k+1.

另外,,你也可以自己修改修改,來加深理解.例如

boolean isPrime; //定義布爾變量判斷是否素數.是:true;否:false

for (int i = 3; i = 100; i++) {

isPrime = true;

int k = (int) Math.sqrt(i);

for (int j = 2; j = k; j++) {

if (i % j == 0) {

isPrime = false; //如果能夠有數整除i,那麼就不是素數.

break;

}

}

if (isPrime) {

System.out.println(i);

}

}

這樣就沒有必要在外層循環里就定義j這個變量了.如果我上面說的你理解還是比較困難,可以先理解用布爾變量來控制的寫法.這個理解了,用j k 判斷的就也很容易理解了.

java輸入的一個數,求小於等於該數的所有質數(素數).

Java程序:

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print(“請輸入一個整數:”);

int number = scan.nextInt();

PrimeNumber pn = new PrimeNumber();

pn.setNumber(number);

pn.printAll();

}

}

class PrimeNumber {

protected int number;

public void setNumber(int number) {

this.number = number;

}

public int getNumber() {

return this.number;

}

public boolean isPrimeNumber(int number) {

int k = (int)(Math.sqrt(number));

for(int i=2; i=k; i++) {

if(number % i == 0) {

return false;

}

}

return true;

}

public void printAll() {

for(int i=2; i=number; i++) {

if(isPrimeNumber(i)) {

System.out.println(i);

}

}

}

}

運行測試:

請輸入一個整數:100

2

3

5

7

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309649.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有着廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論