如何解决问题以找到从 1 到 100 的最小素数,如果有比此代码更好的代码,请更新它



我试图通过将最小素数(p)与一组非重复(n)自然数除以来获得最小素数(p),其中(q)最小自然数余数应该是q

约束为 1

Example 1:

input (n): 3 4 5 1

output (p): 61

解释:

这里 n+1 数是 3、4、5 和 1,其中 q = 1(是最小自然数)。

最小的数字是 1,当除以 3、4 和 5 时留下余数 1 是 61,是素数。因此输出是61.

Example 2:

input (n): 3 4 5 2

output (p): None

解释:

这里 q=2。除以 4 叶子余数 2 时的任何数字必须是偶数,例如 6、10、14 等。

因此它不可能是素数.

因此输出是None

Here is my code:

import java.util.*;
public class Main{
public static void main(String [] args){
int[] n = {3,4,5};
int q =1,i,temp1 = 0,p;
String temp =new String("None");
for(p=3;p<100;p++){
if(p%n[0] == q && p%n[1] == q && p%n[2] == q)
temp1 = p;
}
if(temp1%n[0] == q && temp1%n[1] == q && temp1%n[2] == q)
System.out.println(temp1);
else
System.out.println(temp);
}
}

Input : 3,4,5,1Output is 61.

你的代码有点混为一谈。 如果将其分解为方法,它将促进该过程并使其更容易调试。 但不要在测试阶段提示输入。 对要用来测试的ints数组进行硬编码。

我建议编写两种方法。

  • 第一种方法(例如isPrime) 是确定一个值是否是素数。 这个网站上有很多关于如何计算素数的好答案。 只需进行搜索。

  • 然后将最小的素数初始化为Integer.MAX_VALUE(这也是一个素数)

  • 第二种方法只是使用候选项调用第一个方法,并执行以下操作:

    • 如果isPrime方法返回 true,
      • 将其与最小的素数进行比较。
      • 如果较小,则分配给最小的素数,否则忽略。
    • 如果isPrime方法返回 false,则忽略。
  • 完成后,您将拥有最小的素数

通过将代码分解为方法,您可以一次专注于一件事。isPrime方法将是两者中更复杂的方法。确保使用 print 语句来帮助调试过程。

以下是需要考虑的一些事项。

  • 要检查N是否是素数,只需检查从2sqrt(N)的除数的余数。
  • 您可以先尝试2,然后继续3sqrt(N)递增2

你可能想看看埃拉托色尼的筛子作为寻找素数的替代方案。

相关内容

最新更新