我试图通过将最小素数(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,1
Output is 61.
你的代码有点混为一谈。 如果将其分解为方法,它将促进该过程并使其更容易调试。 但不要在测试阶段提示输入。 对要用来测试的ints
数组进行硬编码。
我建议编写两种方法。
-
第一种方法(例如
isPrime
) 是确定一个值是否是素数。 这个网站上有很多关于如何计算素数的好答案。 只需进行搜索。 -
然后将最小的素数初始化为
Integer.MAX_VALUE
(这也是一个素数) -
第二种方法只是使用候选项调用第一个方法,并执行以下操作:
- 如果
isPrime
方法返回 true,- 将其与最小的素数进行比较。
- 如果较小,则分配给最小的素数,否则忽略。
- 如果
isPrime
方法返回 false,则忽略。
- 如果
-
完成后,您将拥有最小的素数
通过将代码分解为方法,您可以一次专注于一件事。isPrime
方法将是两者中更复杂的方法。确保使用 print 语句来帮助调试过程。
以下是需要考虑的一些事项。
- 要检查
N
是否是素数,只需检查从2
到sqrt(N)
的除数的余数。 - 您可以先尝试
2
,然后继续3
sqrt(N)
递增2
。
你可能想看看埃拉托色尼的筛子作为寻找素数的替代方案。