国美Java笔试题
导言
Java是一种广泛使用的计算机编程语言,具有简洁、面向对象、跨平台的特点。在国美的招聘中,Java是常见的技能要求之一。本文将为大家介绍国美Java笔试题,并提供相应的代码示例进行解答。
问题一:求两个整数的最大公约数
问题描述
给定两个整数a和b,求它们的最大公约数。
思路分析
求两个整数的最大公约数可以使用欧几里得算法(辗转相除法)。具体步骤如下:
- 如果a和b中的一个数为0,那么另一个数就是最大公约数;
- 如果a和b都不为0,那么将b赋值给一个临时变量t,然后将a除以b的余数赋值给a,将t赋值给b,继续执行步骤1,直到a或b中的一个数为0。
代码示例
public class GCD {
public static int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
public static void main(String[] args) {
int a = 12;
int b = 18;
int result = gcd(a, b);
System.out.println("最大公约数为:" + result);
}
}
测试结果
最大公约数为:6
问题二:判断一个数是否为素数
问题描述
给定一个正整数n,判断它是否为素数(即只能被1和自身整除的数)。
思路分析
判断一个数是否为素数可以使用试除法。具体步骤如下:
- 如果n为2或3,那么它一定是素数;
- 如果n能被2或3整除,那么它不是素数;
- 如果n大于3,那么从2到√n的范围内依次判断n是否可以被整除。
代码示例
public class PrimeNumber {
public static boolean isPrime(int n) {
if (n <= 3) {
return n > 1;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int n = 17;
boolean result = isPrime(n);
if (result) {
System.out.println(n + "是素数");
} else {
System.out.println(n + "不是素数");
}
}
}
测试结果
17是素数
问题三:冒泡排序
问题描述
给定一个整数数组,使用冒泡排序算法对数组进行排序。
思路分析
冒泡排序是一种简单的排序算法,具体步骤如下:
- 从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置;
- 重复步骤1,直到没有需要交换的元素为止。
代码示例
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
System.out.println("排序结果:");
for (int i = 0; i < arr.length