Я прилично новичок в Java и абсолютный новичок в конкурентном кодировании. Мне сказали попробовать решить проблемы в spoj, чтобы почувствовать это, и PRIME1 был первым, который я решил попробовать. Узнав о сито из эратосфена, и попытавшись составить рабочую программу, я получил ожидаемые результаты по затмению и сказал, что он тоже это принял, но спой сказал, что дает неправильный ответ
Постановка задачи:
https://www.spoj.com/problems/PRIME1/
Поскольку я был новичком, я прошел через множество различных ошибок и исправил их в соответствии с рекомендациями различных форумов, с которыми мне приходилось сталкиваться, начиная с разделения на readLine и заканчивая попытками его отловить. Я не полностью понимаю все эти решения и не знаю, являются ли они причиной неправильного ответа. Я пытался запустить его несколько раз на затмении и проверять результаты из списка простых чисел, и даже idone он запустил мой код и сказал, что он был успешным, хотя я не знаю, насколько это правильно, из-за того, что я использовал веб-сайт для впервые благодаря спой.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Eratosthenes {
public static void main(String[] args)throws IOException{
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
while(n-->0) {
String[] inputs = br.readLine().split(" ");
//finding the limits
int o=Integer.parseInt(inputs[0]);
int p=Integer.parseInt(inputs[1]);
int b=(int)Math.sqrt(p);
int[] prime=new int[p+1];
//assigning all values prime at first
for(int i=0;i<=p;i++) {
prime [i]=1;
}
//removing 0 and 1
prime[0]=0;
prime[1]=0;
//using the sieve to remove all composite multiples of primes
for(int i=2;i<=b;i++) {
if(prime[i]==1) {
for(int j=i*2;j<=p;j+=i) {
prime[j]=0;
}
}
}
//printing the primes
for(int i=0;i<prime.length;i++) {
if(prime[i]==1) {
if(i>=o)
System.out.println(i);
}
}
}
}catch(Throwable trh) { return; }
}
}
Что здесь не так? Это на самом деле дает неправильные результаты? Или это что-то еще?