java判斷素?cái)?shù)最快方法 java中判斷素?cái)?shù)的方法
2024-08-25
更新時(shí)間:2024-08-25 18:00:59作者:未知
經(jīng)過(guò)一番艱難的思想斗爭(zhēng),覺(jué)得自己并不想學(xué)習(xí)網(wǎng)絡(luò),懷疑自己入錯(cuò)了坑!我想了很久想的我頭暈?zāi)垦?,想的我茶不思,飯不想;想的我不想再想?/p>
走路在想,上課在想,下課在想,睡覺(jué)在想,就連拉屎也不得不想,,最后還是決定學(xué)習(xí)Android開發(fā),不管我的選擇是否正確,何況本就沒(méi)有正確一說(shuō),正確與錯(cuò)都只是那些成功者對(duì)我們?cè)V說(shuō)的故事而已!至少我現(xiàn)在不后悔,現(xiàn)在不會(huì)以后也不會(huì),因?yàn)檫@就是我的選擇;
而且就算是別人認(rèn)為我錯(cuò)了那又怎么樣,我不在乎再一次展示一下自己的狼狽;
現(xiàn)在什么也不想,什么也不說(shuō),什么也不干;一心一意學(xué)習(xí)此番;
希望假以時(shí)日,我也可以在別人迷茫的時(shí)候,可以坦然的寫出自己的故事,然后甩下筆尖,悠然離去,而心中那一份精神卻是無(wú)人能懂的,除非你親自經(jīng)歷過(guò),所以我不允許自己
相信任何人,只相信自己,任何人都不能阻擋我,包括我自己。而大部分時(shí)刻阻擋你的往往是你自己,如果你自己都不能阻擋你,則世無(wú)有所懼也!
——————————————————————————————————————————————————————————————————————————
大學(xué)大學(xué),大部分靠自學(xué),如果只學(xué)大綱的東西畢業(yè)后。那就是廢物一條;
用此文開始我學(xué)Android的過(guò)程!
——————————————————————————————————————————————————————————————————————————-
學(xué)習(xí)android開發(fā)首先要的java基礎(chǔ)是一定要有的!
<span style=”font-size:18px;”><span style=”font-size:14px;”>// 關(guān)于求1-n之間的素?cái)?shù)用java實(shí)現(xiàn)的幾種方法//1.常規(guī)方法 從2–x-1是否可以被整除package text;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner in = new Scanner(System.in);int x;x = in.nextInt();boolean isprime = true;for (int i = 2; i <= x; i++) {for(int j = 2; j < i; j++) {if(i % j == 0) {isprime = false;break;}}if(isprime) System.out.print(i + ” “);isprime = true;}// 測(cè)試結(jié)果: 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//}}</span></span>———————————————————————————————————————————————————————————————————————
<span style=”font-size:18px;”>// 關(guān)于求1-n之間的素?cái)?shù)用java實(shí)現(xiàn)的幾種方法//2.改進(jìn)方法 ①去偶數(shù) ②從3開始每次加2是否可以被整除 則大約一共計(jì)算n/2次package text;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner in = new Scanner(System.in);int x;x = in.nextInt();boolean isprime = true;for(int i = 1; i <= x; i++ ) {if(i == 1 || (i % 2 == 0 && i != 2 ) ) continue; //1和偶數(shù)便可以不必再往下走for(int j = 3; j < i; j += 2) {if(i % j == 0) { //如果是2則不進(jìn)入子循環(huán)isprime = false;break;}}if(isprime) System.out.print(i + ” “);isprime = true;}// 測(cè)試結(jié)果: 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//}}</span>——————————————————————————————————————————————————————————————————————————
<span style=”font-size:18px;”>// 關(guān)于求1-n之間的素?cái)?shù)用java實(shí)現(xiàn)的幾種方法//3.改進(jìn)方法 每個(gè)數(shù)只要除到sqrtx 即可package text;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner in = new Scanner(System.in);int x;x = in.nextInt();boolean isprime = true;for(int i = 1;i <= x; i++) {if(i == 1 || (i % 2 == 0 && i != 2)) continue;for(int j = 3;j <= Math.sqrt(i);j += 2 ) {if(i % j == 0) {isprime = false;break;}}if(isprime) System.out.print(i + ” “);isprime = true;}// 測(cè)試結(jié)果: 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//}}</span>———————————————————————————————————————————————————————————————————————————–
<span style=”font-size:18px;”>// 關(guān)于求1-n之間的素?cái)?shù)用java實(shí)現(xiàn)的幾種方法//4.改進(jìn)方法 判斷是否可以被<x的素?cái)?shù)整除package text;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner in = new Scanner(System.in);int x;x = in.nextInt();int[] prime = new int[100];int cnt = 1;prime[0] = 2;boolean isprime = true;for(int i = 3; i <= x; i += 2) {for(int j = 0; j < cnt; j++) {if(i % prime[j] == 0) {isprime = false;break;}}if(isprime) prime[cnt++] = i;isprime = true;}for(int k = 0; k < cnt; k++) {System.out.print(prime[k] + ” “);}// 測(cè)試結(jié)果: 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//}}</span>————————————————————————————————————————————————————————————————————————-5. 構(gòu)造素?cái)?shù)序列primes[i]: 2, 3, 5, 7, …
由4的算法我們知道, 在素?cái)?shù)序列已經(jīng)被構(gòu)造的情況下, 判斷n是否為素?cái)?shù)效率很高;
但是, 在構(gòu)造素?cái)?shù)序列本身的時(shí)候, 是否也可是達(dá)到最好的效率呢?
事實(shí)上這是可以的! — 我們?cè)跇?gòu)造的時(shí)候完全可以利用已經(jīng)被構(gòu)造的素?cái)?shù)序列!
假設(shè)我們已經(jīng)我素?cái)?shù)序列: p1, p2, .. pn
現(xiàn)在要判斷pn+1是否是素?cái)?shù), 則需要(1, sqrt(pn+1)]范圍內(nèi)的所有素?cái)?shù)序列,
而這個(gè)素?cái)?shù)序列顯然已經(jīng)作為p1, p2, .. pn的一個(gè)子集被包含了!
// 關(guān)于求1-n之間的素?cái)?shù)用java實(shí)現(xiàn)的幾種方法//4.改進(jìn)方法 構(gòu)造素?cái)?shù)表的方法<span style=”font-size:18px;”>package text;import java.util.Scanner;public class test {public static void main(String[] args) {boolean[] isprime = new boolean[100];for(int i = 0;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 = 2; i < isprime.length; i++)if(isprime[i]) System.out.print(i + ” “);// 測(cè)試結(jié)果: 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//}}</span>最后自己總結(jié)一下;如果用數(shù)組做的話構(gòu)造素?cái)?shù)表的方法,個(gè)人覺(jué)得并不可取,因?yàn)榧偃缫蟮氖?-x的素?cái)?shù)而x很大,,那么必然要使用一個(gè)超大的數(shù)組而素?cái)?shù)只是占其中一小部分,所以浪費(fèi)了很多的空間;
2.建議采用第三種和第四種方法來(lái)做