今天是周三,不过准确的来说写这篇日志的时候是周四上午11点了。不知道为什么感觉很懒,很累,提不起来干劲。周三没有什么很特别的事情发生,和平日一样,自己在工位上学JAVA的基础语法,写写基本的练习题什么的。这样的日子好蛋疼啊,每天在这里干坐着,感觉差距很大,从零开始学也太尴尬了。不提了,比昨天的自己有进步就好?这个鸡汤有点老土哦,嘿嘿嘿,那我能咋办呢,也就只能这么安慰安慰自己了。
package homework; /** * 统计找出一千万以内,一共有多少质数 * * 质数概念: 只能被1和自己整除的数 * 举例: * 5只能被 1和5 整除,所以是质数 * 8可以被2整除,所以不是质数 */ public class Test { public static void main(String[] args) { long sum = 0; long MAX = 1000 * 10000; for(int i = 1; i < MAX; i++){ if(isPrime(i)) { sum++; } } System.out.println(sum); } private static boolean isPrime(long num){ for(long i = 2;i * i <= num;i++){ if(num % i == 0) return false; } return true; } }
package homework; /** * 埃拉托斯特尼筛法 * 统计找出一千万以内,一共有多少质数 * * 质数概念: 只能被1和自己整除的数 * 举例: * 5只能被 1和5 整除,所以是质数 * 8可以被2整除,所以不是质数 */ public class Test { public static void main(String[] args) { int sum = 0; int MAX = 1000 * 10000; //用数组将1000万以内的数分为两大派系,素数用0代替数值,合数用1代替数值; //一开始默认全部为素数,所以值全部为0,等到开始筛选的时候再把为合数的赋值为1 int num[] = new int[MAX]; //由于1规定不是素数,所以要提前用1标值 num[0] = 1; double prescription = Math.sqrt(MAX); //因为1不是素数,所以从2开始筛选 for (int i = 2; i < prescription; i++) { //开始把所有素数的倍数剔除,剩下的就是素数 for (int j = i * i;j < MAX;j = j + i){ //把素数的倍数剔除,也就是赋值为1,不是素数就是合数 num[j - 1] = 1; } } for (int i = 2; i < num.length; i++) { if(num[i] == 0) sum++; } System.out.println(MAX / 10000 + "万以内的素数个数之和为:" + sum); } }
package homework; /** * 通过Scanner从控制台读取字符串,然后把字符串转换为字符数组 * 参考的转换方式: * * String str = "abc123"; * char[] cs = str.toCharArray(); * 转换为字符数组后,筛选出控制台读取到的字符串中的大写字母和数字,并打印出来 */ import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); char[] charStr = str.toCharArray(); for (int i = 0;i < charStr.length;i++){ if(Character.isUpperCase(charStr[i]) || Character.isDigit(charStr[i])){ System.out.print(charStr[i]+" "); } } } }
package homework; import java.util.Random; /** * 创建一个长度是5的随机字符串,随机字符有可能是数字,大写字母或者小写字母 * * 给点提示: 数字和字符之间可以通过互相转换 * * char c = 'A'; * short s = (short) c; * * * 通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了 */ public class Test { public static void main(String[] args) { int length = 5; Random random = new Random(); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0;i < length;i++){ int number = random.nextInt(3); int result = 0; switch (number){ //case0是输出数字 case 0: result = (int)(Math.random() * 10 + 48); char s = (char) result; stringBuilder.append(s); System.out.print(s); break; //case1是输出小写字母 case 1: result = (int)(Math.random() * 26 + 97); char s1 = (char) result; stringBuilder.append(s1); System.out.print(s1); break; case 2: result = (int)(Math.random() * 26 + 65); char s2 = (char) result; stringBuilder.append(s2); System.out.print(s2); break; default: break; } } } }
package homework; /** * 创建一个长度是8的字符串数组 * 使用8个长度是5的随机字符串初始化这个数组 * 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写) * * 注1: 不能使用Arrays.sort() 要自己写 * 注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序 */ public class Test { public static void main(String[] args) { String[] strings = getStringArray(8,5); printStringArray(strings); stringArraySort(strings); printStringArray(strings); } /** * 生成一个保存所有大写小写字母,数字的字符串 */ private static String strList(){ StringBuilder s = new StringBuilder(); //字符串填充0-9 for (char c = '0';c <= '9';c++){ s.append(c); } //字符串填充a-z for (char c = 'a';c <= 'z';c++){ s.append(c); } //字符串填充A-Z for (char c = 'A';c <= 'Z';c++){ s.append(c); } return s.toString(); } /** * 生成指定长度的随机字符串 */ private static String getString(int length){ //保存数字、大小写字母的字符串 String str = strList(); int strLength = str.length(); //生成长度为length的char数组 char[] ch = new char[length]; //给char数组填充字符 for(int i = 0;i < length;i++){ int j = (int)(Math.random() * strLength); ch[i] = str.charAt(j); } return String.valueOf(ch); } //创建长度m的字符串数组,并进行随机初始化,数组里每个的字符串长度为n private static String[] getStringArray(int m,int n){ String[] strings = new String[m]; for (int i = 0;i < m;i++){ strings[i] = getString(n); } return strings; } //对字符串数组进行排序,无视大小写,选择排序 private static void stringArraySort(String[] strings){ //最后一位可以不取,前面都选择排序好了最后一个肯定是最大的 for (int i = 0;i < strings.length - 1;i++){ for (int j = i + 1;j < strings.length;j++){ if(strings[i].compareToIgnoreCase(strings[j]) > 0){ String temp = strings[i]; strings[i] = strings[j]; strings[j] = temp; } } } } //打印字符串数组 public static void printStringArray(String[] strings) { System.out.print("{" + strings[0]); for (int i = 1; i < strings.length; i++) { System.out.print(", " + strings[i]); } System.out.println("}"); } }