日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中判断素数的五种方法

發布時間:2023/12/9 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中判断素数的五种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 中判斷素數我們有很多方法,每種方法時間復雜度也不一樣。今天我匯總了一下,分享給大家。既可以輸出前 50 或 n 個素數,也可以判斷 100 (或 n) 以內的素數。

1. 從 2 到 x-1 測試是否可以整除

Scanner in = new Scanner(System.in);int x = in.nextInt(); boolean isPrime = true; if ( x == 1) {isPrime = false; } for( int i = 2; i< x; i++) {if(x % i ==0){isPrime = false;break;} } if( isPrime) {System.out.println(x +"是素數");} else {System.out.println(x+ "不是素數"); }

2. 去掉偶數后,從 3 到 x-1, 每次加 2

改進版,時間復雜度為 O(n/2)

if(x ==1 || x %2 ==0 && x !=2 ) {isPrime = false; } else {for(int i =2; i<x; i +=2){if( x % i == 0){isPrime = false;break;}} } if( isPrime) {System.out.println(x +"是素數");} else {System.out.println(x+ "不是素數"); }

3. 2 方法上的改進版,只需到 sqrt(x) 即可以

數學上可以證明,sqrt(x) 即 x 的平方根
時間復雜度為 O(sqrt(n))

if(x ==1 || x %2 ==0 && x !=2 ) {isPrime = false; } else {for( int i =3; i< Math.sqrt(x); i+=2){if( x % i == 0){isPrime = false;break;}} } if( isPrime) {System.out.println(x +"是素數"); } else {System.out.println(x+ "不是素數"); }

4. 找出前 50 個素數

判斷是否能被已知的的且 <x 的素數整除
這個方法可擴展性很強,建議掌握。

int [] primes = new int[50]; primes[0] =2; int cnt =1; Main: for(int x= 3; cnt<primes.length; x++) {for(int i = 0; i< cnt; i++){if( x % primes[i] == 0){continue Main;}}primes[cnt++] = x;} for ( int k: primes) {System.out.print(k+ " "); }

5. 用計算機的語言去思考

構造素數表,構造 n 以內的素數表

原理:

  • 令 x =2;
  • 將 2x、3x、4x 直至 ax<n 的數標記為非素數
  • 令 x 為下一個沒有被標記為非素數的數,重復 2;直至所有的數都已嘗試完畢。
  • boolean[] isPrime = new boolean[100]; for( int i =2; i< isPrime.length; i++) {isPrime[i] = true; } for(int i =2; i<isPrime.length; i++) {if( isPrime [i]){for(int k=2; i*k < isPrime.length; k++){isPrime[i*k] = false;}} } for( int i = 0; i<isPrime.length; i++) {if(isPrime[i]){System.out.print(i+ " ");} }

    好了,以上便是五種判斷素數的方法,第四種和第五種方法要求掌握,相信你能很快學會,一定一定要上手實操,debug 一下,你就懂了。

    System.out.println(“給我點個贊!”);

    總結

    以上是生活随笔為你收集整理的Java中判断素数的五种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。