今天是周三,不过准确的来说写这篇日志的时候是周四上午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("}");
}
}

京公网安备 11010502036488号