本文目錄一覽:
- 1、java怎麼判斷素數
- 2、java求素數代碼
- 3、Java中 什麼是素數?什麼條件?
- 4、java里怎麼實現素數?
- 5、java判斷素數
- 6、java 判斷是不是素數
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求素數代碼
求1-N以內的所有素數,實現思路如下:
1、 得到1到n之間的素數,存到一個ArrayList集合。
2、判斷一個數是不是素數:只能被1和本身整除
說明:從2開始除,不需要到n,也就是循環條件是 n 就可以,這之間只要被整除了,那麼他就不是素數了。
3、設置主函數,運行 getPrimeNumberToN獲取限定範圍內的素數。
執行結果圖:
擴展資料:
實現功能的編程事項:
1、模塊化思想。
先拆分需求,先拆分先考慮怎麼確定一個數是不是素數,然後再復用到所有。不能把方法堆到一起,否則無法復用代碼。
2、注意注釋。
就算是自己的測試代碼,盡量寫清楚注釋,這樣即使過了三個月,再看代碼,也能清晰明了。不要覺得簡單,就懶得注釋。
3、注意參數命名。
從類名到方法名,再到變量名,都不能隨意取名,關於這個命名,不要嫌棄長,重點是意思清楚明白。見名知意(語義化),是最好的。
Java中 什麼是素數?什麼條件?
素數是指不能被除了一和自身整除的數,所以判斷num是不是素數只有從二開始一直除到num/2,都不能整除就返回true,表示是素數,否則返回false,表示不是素數。
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判斷素數
樓主,首先你得知道,java是面向對象的語言。而c語言是面向過程的。
C語言你可以用scanf輸入n。但是java是面向對象的。你想從屏幕得到一個數。必須調用一個類的方法從而取得n。這些類就是輸入輸出流對象。如BufferedReader等。
建議你去看看java的輸入輸出流。
一下是代碼:
import java.io.*;
public class SystemInTest{
//判斷是否為質數,是的話返回true不是的話返回false
public static boolean isPrimeNumber(int n)
{
//2為質數
if(2==n)
{
return true;
}
for(int i=2;in;i++)
{
if(n%i==0)
return false;
}
return true;
}
public static void main(String [] args) throws NumberFormatException, IOException{
int n=0;
while(true){//為了方便測試,無限循環
System.out.println(“請輸入一個大於1的整數:”);
//以屏幕為輸入源 新建一個BufferedReader
BufferedReader bin=new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(bin.readLine()); //從屏幕得到的是字符串類型的,轉換為整數類型
if(isPrimeNumber(n))
{
System.out.println(n+”:是一個質數.”);
}else{
System.out.println(n+”不是一個質數.”);
}
}
}
}
java 判斷是不是素數
判斷number是否是素數有這麼幾種方法:
(1)用2至number-1之間的所有數去整除number,如果有一個能被整除,說明number是非素數;除非所有的數都不能被整除,才說明number是素數。
(2)用2至number/2之間的所有數去整除number,如果有一個能被整除,說明number是非素數;除非所有的數都不能被整除,才說明number是素數。
(3)用2至number的平方根之間的所有數去整除number,如果有一個能被整除,說明number是非素數;除非所有的數都不能被整除,才說明number是素數。
這3種的方法的效率是逐漸提高的。下面列出了第3種方法的實現:
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
int number; // 輸入的數字
Scanner input = new Scanner(System.in);
System.out.println(“請輸入數字”);
number = input.nextInt(); // 輸入數字
if(isPrimeNumber(number)){
System.out.println(number + “是一個素數”);
}
else{
System.out.println(number + “是一個非素數”);
}
}
public static boolean isPrimeNumber(int num){
if(num 2){
System.out.println(“數據錯誤”);
return false;
}
int k = (int)Math.sqrt(num); //num的平方根
int i;
for(i=2; i=k; i++){ //依次用2..k之間的數去整除num,如果沒有一個數能被整除,說明num是素數
if(num % i == 0){
break;
}
}
if(i k){
return true;
}
return false;
}
}
如果對你的程序進行修改,也可這樣:
public static void main(String[] args) {
int number;// 輸入的數字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println(“請輸入數字”);
number = input.nextInt();// 輸入數字
for(j=2;jnumber;j++){
if(number%j == 0) {
System.out.println(“這不素數”);
break;
}
}
if(j=number)
System.out.println(“這是素數”);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/159108.html