常用认识技巧
在在写算法的时候,有非常实用的基础数学技巧。下面我将列举一下。
1. 取模运算
作用:获取余数。
常用获取一个数字的个位数。
获取个位数num % 10
获取十位数num % 100
,依次类推
int num = 23465;int digit = num % 10; // 5
// 判断一个数是奇数还是偶数num % 2 == 0 // 偶数num % 2 == 1 // 奇数
2. 整数除法
作用:移除数字的最低位
常用是用来去掉数字的个位数。
去掉个位数num / 10
去掉十位数num / 100
,依次类推
int num = 23465;int remaining = num / 10; // 2346
3.数字反转
作用:将数字的各位逆序排列,常用于回文数判断或调整顺序。
int reverseNumber(int num) { int reversed = 0; while (num > 0) { reversed = reversed * 10 + num % 10; num /= 10; } return reversed;} // 示例:123 → 321
4.位运算
作用:高效处理二进制数据,优化计算速度。
判断奇偶:num & 1(比 num % 2 更快)
乘/除 2:num << 1(乘 2),num >> 1(除 2)
5.素数判断
素数是不能被除了1和它自身以外的任何数整除
原理:检查数字n是否能被2到$\sqrt{n}$
只需检查奇数(除2外,偶数不可能是素数)
boolean isPrime(int n) { if (n <= 1) return false; // 1和非正整数不是素数 if (n == 2) return true; // 2是素数 if (n % 2 == 0) return false; // 排除偶数
for (int i = 3; i * i <= n; i += 2) { // 检查3到√n的奇数 if (n % i == 0) { return false; } } return true;}
6、数字字符串转换为数字
String str = "3";int number = str.charAt(0) - '0';
ASCII 码转换:字符在计算机中以 ASCII 码(或 Unicode 码)存储。
例如:
0
对应 ASCII 码 48
1
对应 49,依此类推至 ‘9’ 的 57
仅当字符是 0
~ 9
时有效。
或使用Character.isDigit()
方法
7、将小写字母转换成大写字母
private char toUpperCase(char first) { return (char) (first - 'a' + 'A');}
ASCII 码差值:
小写字母 a
到 z
的 ASCII码为97 ~ 122
。
大写字母 A
到 Z
的 ASCII码为65 ~ 90
。
小写字母与大写字母的 固定差值为32
(例如:'a' - 'A' = 32
)。
或使用Character.toUpperCase(ch)
方法