java素數怎麼判斷
Ⅰ 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;j<number;j++){
if(number%j == 0) {
System.out.println("這不素數");
break;
}
}
if(j>=number)
System.out.println("這是素數");
}
Ⅱ java判斷素數的代碼
法一:
class Test2
{
public static void main (String []args)
{ int j;
for(int n=1;n<=100;n++)
{
for(j=2;j<=n-1;j++)
{
if(n%j==0)
break;
}
if(j>=n-1)
System.out.println(n);
}
}
}
法二:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class sushu extends Applet implements ActionListener{
TextField t1=new TextField(5);
TextField t2=new TextField(5);
Button b1=new Button("begin");
int m,n;
public void init(){
add(t1);
add(t2);
add(b1);
b1.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
m=Integer.parseInt(t1.getText());
n=Integer.parseInt(t2.getText());
repaint();
}
public void paint(Graphics g){
boolean f;
int i,j,k=0;
for(i=m;i<=n;i++){
f=true;
for(j=2;j<=i-1;j++)
if(i%j==0)
{f=false;break;}
if(f){
g.drawString(" "+i,(k%10)*20+20,(k/10)*60+80);
k=k+1;
}
}
}
}
Ⅲ 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編寫判斷素數的程序
import java.util.*;
class Test {
public static void main(String[] args) {
System.out.println("請輸入要進行判斷的整數:");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
System.out.println("您輸入的整數是:" + number);
if(isPrimeNumber(number)) {
System.out.println("您輸入的數" + number + "是素數。");
} else {
System.out.println("您輸入的數" + number + "不是是素數。");
}
}
//判斷素數的靜態方法
public static boolean isPrimeNumber(int num) {
boolean flag = true;
if(num == 2) {
return flag;
}
for(int i = 1; i < Math.sqrt(num); i++) {
if(num % 2 == 0) {
flag = false;
break;
}
}
return flag;
}
}
寫了一個,不知道滿足你的要求不?
Ⅳ 在java中如何判斷一個數是不是素數
importjava.util.Scanner;
publicclassDemo{
publicstaticvoidmain(String[]args){
System.out.println("請輸入一個正整數:");
Scannerscanner=newScanner(System.in);
intnumber=scanner.nextInt();
System.out.println("是否是素數:"+isPrime(number));
scanner.close();
}
staticbooleanisPrime(intnumber){
if(number<=1){
returnfalse;
}
for(inti=2;i<=Math.sqrt(number);i++){
if(number%i==0){
returnfalse;
}
}
returntrue;
}
}
Ⅵ 用 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中素數的判斷
int[] num={2,3,5,7};
public boolean isPrime(int a){
boolean flag=true;//默認傳入的數是素數
if(a==1 || a==2 )return flag;//1 2 的時候直接返回true
if(a==0)return false;//0不是素數
for(int i=0;i<num.length;i++){
int number=num[i];
if(a!=number && a==((a/number)*number)){//a除以數組中的數都沒有餘數的時候代表a不是素數
flag=false;
}
}
return flag;
}
public List getPrimes(int a, int b){//我默認a<b了 其他你自己判斷吧;
List<Integer> list=new ArrayList<Integer>();
for(int i=a;i<=b;i++){//我有個疑問a,b范圍內包括a,b不?我默認包括了
if(isPrime(i)==true){//判斷是否是素數
list.add(i);
}
}
if(list.size()>0){
for(Iterator<Integer> it=list.iterator();it.hasNext();){
System.out.println(it.next());
}
}
return list;
}
沒經過測試,都是在這框里打的,可能有問題,你看下吧。
Ⅷ 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;i<n;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中判斷素數
下邊是一個判斷num是否是素數的方法,若是素數,返回ture,否則返回false
publicbooleanisPrime(intnum)
{
for(inti=2;i<=Math.sqrt(num);i++)
{
if(num%i==0)returnfalse;
}
returntrue;
}