国美Java笔试题

导言

Java是一种广泛使用的计算机编程语言,具有简洁、面向对象、跨平台的特点。在国美的招聘中,Java是常见的技能要求之一。本文将为大家介绍国美Java笔试题,并提供相应的代码示例进行解答。

问题一:求两个整数的最大公约数

问题描述

给定两个整数a和b,求它们的最大公约数。

思路分析

求两个整数的最大公约数可以使用欧几里得算法(辗转相除法)。具体步骤如下:

  1. 如果a和b中的一个数为0,那么另一个数就是最大公约数;
  2. 如果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和自身整除的数)。

思路分析

判断一个数是否为素数可以使用试除法。具体步骤如下:

  1. 如果n为2或3,那么它一定是素数;
  2. 如果n能被2或3整除,那么它不是素数;
  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. 从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置;
  2. 重复步骤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