设计一个新的分组策略并实施,分成两组,第一组是素数,第二组是合数,随机组合要求每一组人数小于等于三,有JAVA实行,写出完整代码
时间: 2024-10-24 08:13:17 浏览: 14
设计一个分组策略,我们首先需要创建两个列表,一个用于存储素数,另一个用于存储合数。然后我们会生成一定数量的随机数,将它们分别放入这两组,直到每组的人数不超过3。这里是一个简单的Java实现:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
public class GroupingStrategy {
private static final int MAX_PRIME = 100; // 可以根据需求调整素数范围
private static final int MAX_COMPOSITE = 100; // 同上,合数范围
public static void main(String[] args) {
ArrayList<Integer> primes = new ArrayList<>();
ArrayList<Integer> composites = new ArrayList<>();
for (int i = 2; i <= MAX_PRIME; i++) {
if (isPrime(i)) {
primes.add(i);
}
}
for (int i = 2; i <= MAX_COMPOSITE; i++) {
if (!isPrime(i)) {
composites.add(i);
}
}
Random random = new Random();
int primeCount = Math.min(primes.size(), 3); // 确保素数组人数不超过3
int compositeCount = Math.min(composites.size(), 3); // 合数组也同理
ArrayList<Integer>[] groups = new ArrayList[2];
groups[0] = new ArrayList<>(Arrays.copyOf(primes.subList(0, primeCount), primeCount));
groups[1] = new ArrayList<>(Arrays.copyOf(composites.subList(0, compositeCount), compositeCount));
while (groups[0].size() < 3 && !primes.isEmpty()) {
groups[0].add(primes.remove(random.nextInt(primes.size())));
}
while (groups[1].size() < 3 && !composites.isEmpty()) {
groups[1].add(composites.remove(random.nextInt(composites.size())));
}
System.out.println("Group 1: " + groups[0]);
System.out.println("Group 2: " + groups[1]);
}
// 判断是否为素数
private static boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
}
阅读全文