赞
踩
目录
- 是一个帮助我们进行数学计算的工具类
- 私有化构造方法,所有的方法都是静态的
私有化构造方法则说明 Math 类不可创建对象
- public class Test01 {
- public static void main(String[] args) {
-
- //abs绝对值
- System.out.println(Math.abs(-1));//1
- System.out.println(Math.abs(1));//1
-
- //ceil向上取整
- System.out.println(Math.ceil(-1.3));//-1.0
- System.out.println(Math.ceil(1.3));//2.0
-
- //floor向下取整
- System.out.println(Math.floor(-1.3));//-2.0
- System.out.println(Math.ceil(1.3));//1.0
-
- //round四舍五入
- System.out.println(Math.floor(1.3));//1
- System.out.println(Math.floor(1.6));//2
-
- //max 二数较大
- System.out.println(Math.max(1,9));//9
-
- //pow a的b次(注意一般第二个数字传递大于等于1的正整数)
- System.out.println(Math.pow(2,3));//8.0
- System.out.println(Math.pow(2, -2));//0.25
- //若要开2次根号
- System.out.println(Math.sqrt(4));//2.0
- //若要开3次根
- System.out.println(Math.cbrt(8));//2.0
-
-
-
- //random
- System.out.println(Math.random());//[0.0,1.0)
-
-
-
- // abs 的 Bug
- //已int为例,取值范围: -2147483648 ~ 2147483647;
- System.out.println(Math.abs(-2147483648));//仍是-2147483648
- System.out.println(Math.abs(-2147483647));//2147483647
-
- }
- }
这是我们以前的做法:
改进:
可以发现组成 8 的那两个数,一个必须小于 根 8 ,一个必须大于根 8。
再举一个例子:
可以发现同样满足。
因此根据此原理可以改进为:
-
- public class Test{
- public static void main (String[]args){
-
- }
- //验证是否是质数的方法(新方法--效率更高)
- public static boolean isNew(int number) {
- for (int i = 2; i <= Math.sqrt(number); i++) {
- if (number % i == 0) {
- return false;
- }
- }
- return true;
- }
- }
以前方式的含义是:从 2 开始到 number-1 若有能被整除的因子就不是质数。循环结束,没有则是质数
现在方式的含义是:从 2 开始到 number 开根(包含),若有能被整除的因子就不是质数。循环结束,没有则是质数
2.求自幂数
要求 1:求水仙花数----即三位自幂数
- public class Test02 {
- public static void main(String[] args) {
- /* 水仙花数3位 */
- int count = 0;
- for (int i = 100; i < 1000; i++) {
- //ge
- int ge = i % 10;
- //shi
- int shi = i / 10 % 10;
- //bai
- int bai = i / 100 % 10;
- if (i == Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3)) {
- count++;
- }
- }
- System.out.println(count);//4个
- }
- }
要求 2:证明没有两位的自幂数:
- /* 自幂数2位 */
- int count1 = 0;
- for (int i = 10; i < 100; i++) {
- //ge
- int ge = i % 10;
- //shi
- int shi = i / 10 % 10;
- if (i == Math.pow(ge, 2) + Math.pow(shi, 2)) {
- count1++;
- }
- }
- System.out.println(count1);//0个
要求 3:分别统计四叶玫瑰数、五角星数(答案都是 3 个)
- /* 四叶玫瑰数4位 */
- int count2 = 0;
- for (int i = 1000; i < 10000; i++) {
- //ge
- int ge = i % 10;
- //shi
- int shi = i / 10 % 10;
- //bai
- int bai = i / 100 % 10;
- //qian
- int qian = i / 1000 % 10;
-
- if (i == Math.pow(ge, 4) + Math.pow(shi, 4) + Math.pow(bai, 4) + Math.pow(qian, 4)) {
- count2++;
- }
- }
- System.out.println(count2);
-
-
-
- /* 五角星数五位 */
- int count3 = 0;
- for (int i = 10000; i < 100000; i++) {
- //ge
- int ge = i % 10;
- //shi
- int shi = i / 10 % 10;
- //bai
- int bai = i / 100 % 10;
- //qian
- int qian = i / 1000 % 10;
-
- //wan
- int wan = i / 10000 % 10;
-
- if (i == Math.pow(ge, 5) + Math.pow(shi, 5) + Math.pow(bai, 5) + Math.pow(qian, 5)+Math.pow(wan,5)) {
- count3++;
- }
- }
- System.out.println(count3);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。