这个问题来自在线竞赛网站codechef。它需要计算素数。问题是:
农夫二月有三个田地,里面种着土豆。他从第一个田地收获了x个土豆,从第二个田地收获了y土豆,但尚未从第三个田野收获土豆。 Feb非常迷信,他相信,如果他从这三个田间收获的马铃薯总和是质数,他将获得可观的利润。请为他计算最小的马铃薯数量,以帮助他,如果从第三个田地中收获马铃薯,那么马铃薯的总数量将成为最佳数量。第三田应至少收获一个马铃薯。
输入值
输入的第一行包含一个整数T,表示测试用例的数量。接下来的T行中的每行都包含2个由单个空格分隔的整数:x和y。
输出量
对于每个测试用例,输出包含答案的一行。
约束条件
1 ≤ T ≤ 1000
1 ≤ x ≤ 1000
1 ≤ y ≤ 1000
例
输入:
2
1 3
4 3
输出:
1
4
说明
在示例情况1中:农民从第一田收获马铃薯,从第二田收获3马铃薯。总和为4。如果他能够从第三田收割马铃薯,那么总和为5。因此答案是1(他还需要一个马铃薯才能使收获的马铃薯加起来成为素数)。
我是这样解决的:
import java.io.*;
import java.util.StringTokenizer;
class java2s {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T=Integer.parseInt(br.readLine());
while(T-->0) {
StringTokenizer st=new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int sum = x + y;
for(int i=1; i<100; i++) {
int res=sum+i;
if(res==3 || res==5 || res==7) {
System.out.println(i);
break;
}
else if((res%2)!=0 && (res%3)!=0 && (res%5)!=0 && (res%7)!=0) {
System.out.println(i);
break;
}
}
}
}
}
当我在PC上运行该代码时,它工作得很好,但是当我将其提交到竞赛网站时,该评分员表示我的答案不正确。
您能告诉我我缺少哪些特殊情况吗?
最佳答案
首先,输入的显示方式几乎不会引起误解。我想输入应该看起来像
输入:
2
1 3
4 3
和输出应该看起来像
1个
4
您提交的代码正在检查最少的案件。
回答以下问题应有助于您阐明问题
为什么只将变量结果与3,5,7进行比较,其中结果也可以是101(即质数)。
要检查结果是否为质数,为什么只将结果除以2,3,5,7?
例如:169不是素数,并且不能被2,3,5,7中的任何一个整除。
(在所有三个领域中)2月最多可收获多少马铃薯?
如何检查数字是否为质数。