而大部分时刻阻挡你的往往是你自己,如果你自己都不能阻挡你,则世无有所惧也!——————————————————————————————————————————————————————————————————————————大学大学,大部分靠自学,如果只学大纲的东西毕业后。
那就是废物一条;用此文开始我学Android的过程!——————————————————————————————————————————————————————————————————————————-学习android开发首先要的java基础是一定要有的!<span style=”font-size:18px;”><span style=”font-size:14px;”>// 关于求1-n之间的素数用java实现的几种方法//1.常规方法 从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;}// 测试结果: 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;”>// 关于求1-n之间的素数用java实现的几种方法//2.改进方法 ①去偶数 ②从3开始每次加2是否可以被整除 则大约一共计算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和偶数便可以不必再往下走for(int j = 3; j < i; j += 2) {if(i % j == 0) { //如果是2则不进入子循环isprime = false;break;}}if(isprime) System.out.print(i + ” “);isprime = true;}// 测试结果: 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;”>// 关于求1-n之间的素数用java实现的几种方法//3.改进方法 每个数只要除到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;}// 测试结果: 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;”>// 关于求1-n之间的素数用java实现的几种方法//4.改进方法 判断是否可以被<x的素数整除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] + ” “);}// 测试结果: 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. 构造素数序列primes[i]: 2, 3, 5, 7, …由4的算法我们知道, 在素数序列已经被构造的情况下, 判断n是否为素数效率很高;但是, 在构造素数序列本身的时候, 是否也可是达到最好的效率呢?事实上这是可以的! — 我们在构造的时候完全可以利用已经被构造的素数序列!假设我们已经我素数序列: p1, p2, .. pn现在要判断pn+1是否是素数, 则需要(1, sqrt(pn+1)]范围内的所有素数序列,而这个素数序列显然已经作为p1, p2, .. pn的一个子集被包含了!// 关于求1-n之间的素数用java实现的几种方法//4.改进方法 构造素数表的方法<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 + ” “);// 测试结果: 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>最后自己总结一下;如果用数组做的话构造素数表的方法,个人觉得并不可取,因为假如要求的是1-x的素数而x很大,,那么必然要使用一个超大的数组而素数只是占其中一小部分,所以浪费了很多的空间;2.建议采用第三种和第四种方法来做
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)