當前位置:首頁 » 編程語言 » 判斷質數java

判斷質數java

發布時間: 2022-12-06 18:36:25

❶ 用java寫個程序 判斷 用戶輸入的數 是否是質數

使用java編寫判斷自然數是否為素數的方式是,使用scanner來接受用戶輸入的數值,使用素數的演算法,實例如下:

Scannersr=newScanner(System.in);
System.out.print("請輸入a的值:");
inta=sr.nextInt();
booleanis=true;
if(a<1)
{
System.out.println(a+"不是質數,因為他小於一");
}
else
{
List<Integer>list=newArrayList<Integer>();
for(inti=2;i<a;i++)
{
if(a%i!=1&&a%i!=a)
{
if(a%i==0){
is=false;
list.add(i);
}
}
}
if(is){
System.out.println("a是質數");
}else{
Stringyz="";
for(inti=0;i<list.size();i++)
{
if(yz=="")
{
yz=yz+list.get(i);
}else{
yz=yz+","+list.get(i);
}
}
System.out.println("a不是質數,因為他含有因子"+yz);
}
}

❷ java程序判斷輸入的一個數是不是質數

一個數是不是質數:只有被自己本身和1整除的自然數才質數,所以程序很簡單
for (int i=3;i<1000;i++){
for(int j = i-1;j<=i/2;i++){
if (i%j==0){//說明這個數不是質數
break;
}
if (j=i/2){
System.out.print(i+"是質數");
}
}
}

❸ 用java編程實現判斷一個整數是否為質數

素數又稱質數:除1和其自身之外,沒有其它約數的正整數
2是最小的質數,也是唯一的偶質數
1和0既不是質數又不是合數
合數
public static void prime(int num) {// 能求無限大的質數//但如果所求的范圍太大,計算的時間需要很久
int n, m, i = 0;
label1: for (n = 2; n <= num; n++) {
for (m = 2; m <= n / 2; m++) {
if (n % m == 0)
continue label1;
}
i++;
System.out.println("第" + i + "個素數是:" + n);
}
}

❹ 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 編程方法解決「 輸入一個數判斷它是否是質數」

else
if(num1%2!=0&&(num1+1)%2==0){
System.out.println(num1+"是質數");
}
else{
System.out.println(num1+"不是質數");
15%2=1,
(15+1)%2=0
->
15是質數???
修改:
//前面略
else
{
int
flag=1;
for(int
j=2;
j*j<=num1;
j++)//這是質數的判斷方法,只要除到這個數的開根號的數為止即可
if
(num1%j==0){System.out.println(num1+"不是質數");
flag=0;
break;}
if(flag)
System.out.println(num1+"是質數");
}
//後面略

❻ Java 判斷質數的方法

public static void main(String[] args) {
int count=0;
int prime=1;
while(count<100){
while(true){
prime++;
if(isPrime(prime)){
System.out.print(prime+"||");
count++;
if(count%10==0){
System.out.println(" ");
break;
}
}
}

}
}
public static boolean isPrime(int n){
for(int i=2;i<n;i++){
if(n%i==0){
return false;
}
}
if(n==1){
return false;
}
return true;
}

❼ 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語言判斷一個數是不是質數

下面是我用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判斷質數

不知道你要的是不是這種效果,程序在你的基礎上做了一些修改,在你的基礎上增加了假如輸入的不是一個數時做什麼處理,輸入「back」時返回,你可以拿去把程序修改的更完善。。你說的方法都可以調用,在 main方法裡面需要new一個對象來調用,除非你把方法定義為靜態方法(static)。。
import java.util.Scanner;

public class Prime_Decide {

public void isPrime(String st) { // 判斷int整形a是否是素數
try {
if (st.equals("back")) {
Display();
} else {
int a, i;
a = Integer.parseInt(st);
for (i = 2; i <= a / 2; i++) {
if (a % i == 0) {
break;
}
}
if (a == 0) {
System.out.println(a + " 你輸入的數不是素數");
} else if (i > a / 2) {
System.out.println(a + " 你輸入的數是素數");
} else {
System.out.println(a + " 你輸入的數不是素數");
}
Input1();
}
} catch (NumberFormatException e1) {
System.out.println("請你輸入正確的數字!!!");
Input1();
}
}

public void isPrime_2(String s1, String s2) {
try {
if (s1.equals("back")) {
Display();
} else {
int a = Integer.parseInt(s1);
int b = Integer.parseInt(s2);
if (a < 0 && a == b && a < b) {
System.out.println("你的輸入有誤,重新輸入:");
}
int j;
for (int i = a; i <= b; i++) {
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
break;
}
}
if (j > i / 2) {
System.out.println(" " + i + " 是素數");
}
}
Input2();
}
} catch (NumberFormatException e) {
System.out.println("請你輸入正確的數字!!");
Input2();
}
}

public void Input1() {
System.out.println("請輸入你要進行判斷的數:");
Scanner sc = new Scanner(System.in);
String st = sc.nextLine();
isPrime(st);
}

public void Input2() {
// int a, b;
System.out.println("請輸入上界 a= ");
Scanner sc = new Scanner(System.in);
// a = Integer.parseInt(sc.nextLine());
System.out.println("請輸入下屆 b=");
Scanner st = new Scanner(System.in);
// b = Integer.parseInt(st.nextLine());
isPrime_2(sc.nextLine(), st.nextLine());
}

public void Display() {
System.out.println("請輸入你要進行的數的判斷:\n1: 單個數的判斷\n2: 一段整數范圍的判斷\n3: 退出");
try {
Scanner sc = new Scanner(System.in);
int c = Integer.parseInt(sc.nextLine());
if (c == 1) {
Input1();
} else if (c == 2) {
Input2();
} else if (c == 3) {
System.exit(1);
} else if (c != 1 & c != 2 & c != 3) {
System.out.println("你輸入如的信息有誤,請重新輸入1、2、3!");
Display();
}
} catch (NumberFormatException e) {
System.out.println("你輸入如的信息有誤,請重新輸入1、2、3!");
Display();
}
}

public static void main(String[] args) {
Prime_Decide pr = new Prime_Decide();
pr.Display();
}
}

希望對你有幫助!!

熱點內容
idaproforlinux 發布:2023-01-29 09:25:53 瀏覽:827
大話西遊腳本錯誤 發布:2023-01-29 09:25:46 瀏覽:464
javatcp如何判斷伺服器斷開鏈接 發布:2023-01-29 09:18:51 瀏覽:70
java截取指定字元串 發布:2023-01-29 09:15:16 瀏覽:75
壓縮炫彩皮膚多少錢 發布:2023-01-29 09:14:12 瀏覽:799
安卓系統如何解決人臉識別 發布:2023-01-29 09:07:23 瀏覽:996
安卓手Q一區轉蘋果會變什麼 發布:2023-01-29 09:01:11 瀏覽:169
c語言調試工具 發布:2023-01-29 08:54:40 瀏覽:993
為什麼洋蔥數學伺服器異常 發布:2023-01-29 08:51:25 瀏覽:349
小喬源碼 發布:2023-01-29 08:48:36 瀏覽:556