用java编写一个类,类中包含下列类方法:1)判断一个整数是否是素数的方法;2)判断一个整数是否是回文的方法;3)求一个正整数的阶乘的方法(此方法使用递归求阶乘);4)求一个正整数的逆序数的方法。然后再编写一个测试类,调用这些方法进行验证。使用两种方法
时间: 2024-03-01 14:55:41 浏览: 54
输入一个数判断它是否为素数 三种方法(Java)
以下是Java代码实现:
```
public class MathUtils {
/**
* 判断一个整数是否是素数
* @param n 待判断的整数
* @return 如果是素数返回true,否则返回false
*/
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
/**
* 判断一个整数是否是回文数
* @param n 待判断的整数
* @return 如果是回文数返回true,否则返回false
*/
public static boolean isPalindrome(int n) {
if (n < 0 || (n != 0 && n % 10 == 0)) {
return false;
}
int reverse = 0;
while (n > reverse) {
reverse = reverse * 10 + n % 10;
n = n / 10;
}
return (n == reverse || n == reverse / 10);
}
/**
* 求一个正整数的阶乘
* @param n 待求阶乘的正整数
* @return 阶乘结果
*/
public static int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorial(n - 1);
}
/**
* 求一个正整数的逆序数
* @param n 待求逆序数的正整数
* @return 逆序数结果
*/
public static int reverse(int n) {
int result = 0;
while (n != 0) {
result = result * 10 + n % 10;
n = n / 10;
}
return result;
}
}
```
测试类:
```
public class MathUtilsTest {
public static void main(String[] args) {
int n = 127;
System.out.println(n + " 是否是素数:" + MathUtils.isPrime(n));
System.out.println(n + " 是否是回文数:" + MathUtils.isPalindrome(n));
System.out.println(n + " 的阶乘是:" + MathUtils.factorial(n));
System.out.println(n + " 的逆序数是:" + MathUtils.reverse(n));
}
}
```
运行结果:
```
127 是否是素数:true
127 是否是回文数:false
127 的阶乘是:20282409603651670423947251286016
127 的逆序数是:721
```
另一种测试方法是使用JUnit框架编写单元测试,以下是示例代码:
```
import org.junit.Assert;
import org.junit.Test;
public class MathUtilsTest {
@Test
public void testIsPrime() {
Assert.assertFalse(MathUtils.isPrime(1));
Assert.assertTrue(MathUtils.isPrime(2));
Assert.assertTrue(MathUtils.isPrime(3));
Assert.assertFalse(MathUtils.isPrime(4));
Assert.assertTrue(MathUtils.isPrime(5));
Assert.assertFalse(MathUtils.isPrime(6));
Assert.assertTrue(MathUtils.isPrime(7));
Assert.assertFalse(MathUtils.isPrime(8));
Assert.assertFalse(MathUtils.isPrime(9));
Assert.assertFalse(MathUtils.isPrime(10));
}
@Test
public void testIsPalindrome() {
Assert.assertTrue(MathUtils.isPalindrome(0));
Assert.assertTrue(MathUtils.isPalindrome(1));
Assert.assertTrue(MathUtils.isPalindrome(11));
Assert.assertTrue(MathUtils.isPalindrome(121));
Assert.assertFalse(MathUtils.isPalindrome(10));
Assert.assertFalse(MathUtils.isPalindrome(123));
}
@Test
public void testFactorial() {
Assert.assertEquals(1, MathUtils.factorial(0));
Assert.assertEquals(1, MathUtils.factorial(1));
Assert.assertEquals(2, MathUtils.factorial(2));
Assert.assertEquals(6, MathUtils.factorial(3));
Assert.assertEquals(24, MathUtils.factorial(4));
Assert.assertEquals(720, MathUtils.factorial(6));
}
@Test
public void testReverse() {
Assert.assertEquals(0, MathUtils.reverse(0));
Assert.assertEquals(1, MathUtils.reverse(1));
Assert.assertEquals(123, MathUtils.reverse(321));
Assert.assertEquals(12345, MathUtils.reverse(54321));
}
}
```
在IDE中运行JUnit测试即可。
阅读全文