codechef farmer feb.Code:POTATOES 的边角案例
Corner cases of codechef farmer feb.Code:POTATOES
本题来自在线竞赛网站codechef。它需要计算质数。问题是:
Farmer Feb has three fields with potatoes planted in them. He harvested x potatoes from the first field, y potatoes from the second field and is yet to harvest potatoes from the third field. Feb is very superstitious and believes that if the sum of potatoes he harvests from the three fields is a prime number , he'll make a huge profit. Please help him by calculating for him the minimum number of potatoes that if harvested from the third field will make the sum of potatoes prime. At least one potato should be harvested from the third field.
Input
The first line of the input contains an integer T denoting the number of test cases. Each of the next T lines contain 2 integers separated by single space: x and y.
Output
For each test case, output a single line containing the answer.
Constraints
1 ≤ T ≤ 1000
1 ≤ x ≤ 1000
1 ≤ y ≤ 1000
Example
Input:
2
1 3
4 3
Output:
1
4
Explanation
In example case 1: the farmer harvested a potato from the first field and 3 potatoes from the second field. The sum is 4. If he is able to harvest a potato from the third field, that will make the sum 5, which is prime. Hence the answer is 1 (he needs one more potato to make the sum of harvested potatoes prime).
我是这样解决的:
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?
example:169 不是素数,不能被 2,3,5,7 中的任何一个整除。
2月份最多可以收获多少土豆(在所有三个田地里)?
如何判断一个数是否为质数。
本题来自在线竞赛网站codechef。它需要计算质数。问题是:
Farmer Feb has three fields with potatoes planted in them. He harvested x potatoes from the first field, y potatoes from the second field and is yet to harvest potatoes from the third field. Feb is very superstitious and believes that if the sum of potatoes he harvests from the three fields is a prime number , he'll make a huge profit. Please help him by calculating for him the minimum number of potatoes that if harvested from the third field will make the sum of potatoes prime. At least one potato should be harvested from the third field.
Input
The first line of the input contains an integer T denoting the number of test cases. Each of the next T lines contain 2 integers separated by single space: x and y.Output
For each test case, output a single line containing the answer.Constraints
1 ≤ T ≤ 1000 1 ≤ x ≤ 1000 1 ≤ y ≤ 1000
Example
Input:
2 1 3 4 3
Output:
1 4
Explanation
In example case 1: the farmer harvested a potato from the first field and 3 potatoes from the second field. The sum is 4. If he is able to harvest a potato from the third field, that will make the sum 5, which is prime. Hence the answer is 1 (he needs one more potato to make the sum of harvested potatoes prime).
我是这样解决的:
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? example:169 不是素数,不能被 2,3,5,7 中的任何一个整除。
2月份最多可以收获多少土豆(在所有三个田地里)?
如何判断一个数是否为质数。