import java.util.;
public class Main {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
int[] p=new int[1000005];
prime_seive§;
int[] csum=new int[1000005];
for(int i=1;i<=1000000;i++){
csum[i]=csum[i-1]+p[i];
}
int N=sc.nextInt();
while(N>0){
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(csum[b]-csum[a-1]);
N–;
}
}
public static void prime_seive(int[] p){
for(int i=3;i<=1000000;i+=2){
p[i]=1;
}
for(int i=3;i<=1000000;i+=2){
if(p[i]==1){
for(int j=ii;j<=1000000;j+=i){
if(j>0)
p[j]=0;
else break;
}
}
}
p[0]=0;
p[1]=0;
p[2]=1;
}
}
Getting run error|| plz check
@Rajput.apry I have refactored your whole logic, your sieve was wrong, i have corrected it, no need to make csum at all.
When ya just precomputed then you have to count in range thats all.
If you don’t have any query than mark it resolved and rate full!
Happy coding!
import java.util.;
public class Main {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
int[] p=new int[2000005];
prime_seive§;
int N=sc.nextInt();
while(N>0){
int a=sc.nextInt();
int b=sc.nextInt();
int count = 0;
for(int i = a; i <= b; i++) {
if(p[i] == 0)
count++;
}
System.out.println(count);
N–;
}
}
public static void prime_seive(int[] p){
p[0] = 1;
p[1] = 1;
p[2]=0;
for(int i=2;ii<=1000000;i++){
if(p[i]==0){
for(int j=i*i;j<=1000000;j+=i){
p[j]=1;
}
}
}
}
}
it is showing arrayindexoutof bound erreo
its okay,did it,thanks!