最小众倍数

    这半年闲下来,果然是编程技能全废,今天在开发者猩球上看到一个编程题,是求最小众倍数的。花了我差不多一个小时,绞尽脑汁调试才出来,哎


public class leastMajorityMul{

	/******************************************
	 * 在这里输入代码 你不需要写main函数,系统将自动调用leastMajorityMultiple函数
	 ******************************************/

	/*
	 * 题目描述: 1. 给定你五个正整数,它们最小众倍数是指能够被其中至少三个数整除的最小正整数。 给定你各不相同的整型a, b, c,
	 * d以及e。请返回它们的最小众倍数。 输入: 输入五个正整数a,b,c,d,e。a, b, c,
	 * d以及e中每个的取值范围都在1和100之间(其中包括1和100)。a, b, c, d以及e各不相同 输出: 返回它们的最小众倍数 举例: a =
	 * 1 b = 2 c = 3 d = 4 e = 5, 返回4。4能够被1,2以及4整除,满足五个数中至少能被其中三个整除的定义
	 */
	public static int leastMajorityMultiple(int a, int b, int c, int d, int e) {

		int minNum = 0; // 存储最小众倍数

		int arr[] = { a, b, c, d, e };// 备选数

		List consoleList = new ArrayList<>();

		// 循环比较
		for (int i = 0; i < arr.length; i++) {

			int count = 0; // 计数 每能整除一个加1

			for (int j = 0; j < arr.length; j++) { // 每一轮循环结束,当前数就与所有数进行整除计算

				if (arr[i] % arr[j] == 0) {
					count++;
				}
			}
			consoleList.add(count); // 将每个数与其他数整除的结果存入集合

			// 从List集合中找出大于3的并且 最小的整数 的下标 ,然后再找出这个下标在数组中的值,在进行比较,找最小的
			for (int j = 0; j < consoleList.size(); j++) {

				if (consoleList.get(j) >= 3) { // 能整除个数至少3个的下标

					minNum = arr[consoleList.indexOf(consoleList.get(j))];

					// 比较大小 如果有多个? 还要找最小的?
					if (arr[consoleList.indexOf(consoleList.get(j))] < minNum) {
						minNum = arr[consoleList.indexOf(consoleList.get(j))];
					}
				}
			}
		}

		return minNum;
	}

	public static void main(String[] args) {

		// System.out.println(leastMajorityMultiple(1, 2, 2, 3, 3));

		System.out.println(leastMajorityMultiple(1, 2, 3, 4, 5));

	}

}

 学然后知不足,要时刻保持学习的动力啊。


你可能感兴趣的:(最小众倍数)