对于给定的整数数组,其中所有元素均小于1000000。找到数组中最大素数和最小素数之间的差。
Array: [ 1, 2, 3, 4, 5 ] Largest Prime Number = 5 Smallest Prime Number = 2 Difference = 5 - 3 = 2.
使用Eratosthenes筛分法,这是找出小于给定数的所有素数的有效方法。然后,我们将找出最大和最小的质数以获得所需的差。
以下是Java中的程序,用于查找所需的输出。
public class JavaTester { static int MAX = 1000000; static boolean prime[] = new boolean[MAX + 1]; public static void runSieveOfEratosthenes(){ //将质数标志重置为true- for(int i=0; i< MAX+1; i++) prime[i] = true; //将1设置为非素数 prime[1] = false; for (int p = 2; p * p <= MAX; p++) { //如果prime [p]没有被修改,那么它是一个质数 if (prime[p]) { //更新p的所有倍数 for (int i = p * 2; i <= MAX; i += p) prime[i] = false; } } } public static int difference(int arr[]){ int min = MAX + 2; int max = -1; for (int i = 0; i < arr.length; i++) { //检查数字是否为素数 if (prime[arr[i]] == true) { //设置最大值和最小值 if (arr[i] > max) max = arr[i]; if (arr[i] < min) min = arr[i]; } } return max - min; } public static void main(String args[]){ //筛 runSieveOfEratosthenes(); int arr[] = { 1, 2, 3, 4, 5 }; System.out.println(difference(arr)); } }
输出结果
3
假设n,a,b是正整数,其中n不是素数,因此n=ab和a≥b和(a)−b) 越小越好。如果给定n,找到a和b值的最佳算法是什么? 我读到了一个解决方案,他们试图通过搜索一个大于n的平方,将n表示为两个平方之间的差,这样S-n=(另一个平方)。为什么这比简单地找到n的素因子并搜索a,b是n的因子且a-b最小化的组合更好?
问题内容: 我想返回该数字,只要它在限制范围内,否则返回限制的最大值或最小值。我可以结合使用和和。 我想知道,如果有一个现有的或我俯瞰功能。 如果第三方库很常见(例如Commons或Guava),则欢迎它们 问题答案: 从版本21开始,Guava包括(以及其他原语的等效方法)。从发行说明中: 添加了将给定值限制在和值定义的封闭范围内的方法。如果值在范围内,则返回值本身,如果值在范围内,则返回值,如
我正在尝试解决此问题: 一位物理教授给班上的学生做项目。学生们必须组成一个两人小组来做这个项目。教授让学生来决定队伍。一个班级的学生人数将是偶数。 每个学生都有自己的知识水平。它告诉每个学生有多少知识。一个团队的知识水平是两个学生知识水平的总和。 学生们决定组成小组,这样知识最高的团队和知识最低的团队之间的差异就最小了。 投入 输入的第一行将包含测试用例的数量t;在接下来的t行中,第一个数字是n,
问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。
问题内容: 我想输出二维数组的最大值和最小值。Max可以很好地工作,但是即使在数组中没有零的情况下min也总是输出零。在本例中,我设置为99以防止较小的机会在数组中获得零。继承人完整代码: 问题答案: 由于您在中选择随机值的方式,不会存在小于零的值- 但也无法保证任何值都将恰好为零。但是,您将初始化为零,因为这是数组元素的默认值;没有什么比这更小了,所以答案总是零。 您应该在标记为“查找最小值”的
具有矩阵A的: 我想计算所有行中两个相邻数字之间的最大和最小差异。然后过滤以仅限制相邻数字min小于4和7之间的行,最大值在6和12之间的行。输出应该返回无行。 对于以下矩阵: 结果应该是第1行