Thursday, 15 August 2013

generating prime numbers between two numbers in java ...

Alogo :-

Step 1:- take input both the numbers let say m and n;
Step 2:- let p be the first prime number from m ,
Step 3:- remove all the numbers from the list which are divisible by p,
Step 4 :- take the next number in the list this will be the next prime p and repeat
                 step 3.
Step 5 :- continue the steps until p is less then square root of n;
Step 6 :- print the remaining numbers;


JAVA CODE GIVEN BELOW :- for generating primes between 1 and 100000000.

---------------------------------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.util.BitSet;

public class Prime_generator
{
public static void main(String args[])
{
  prime p = new prime();
}
}

class prime
{ boolean ans[];
prime()
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps = new PrintStream(System.out);



BitSet primes = new BitSet(31622);

for(int i =1;i<=31622; i++)
{
 primes.set(i);
}

for(int i=2;i<=31622;i++)
{
if(primes.get(i))
{
for(int j = i*2;j<=177;j++)
{primes.set(j,false);}
}
}//end for

int tc = Integer.parseInt(br.readLine());

while(tc>0)
{
String str = "";
str = br.readLine();
String data[] = str.split(" ");
int m = Integer.parseInt(data[0]);
int n = Integer.parseInt(data[1]);
ans = new boolean[n-m+1];
if(m == 1){m++;}

for(int i = 2;i<=31622;i++)
{
if(primes.get(i))
{
int p = m-m%i;
if(p<m){p = p+i;}
if(p == i){p = p+i;}
while(p<=n){ans[p-m] = true; p = p+i;}
}
}//end for

for(int j=m;j<=n;j++)
{
if(ans[j-m] == false)
{
ps.println(j);
}
}
ps.println("");
tc--;
}


}catch(Exception e){}
}//end constructor
}


--------------------------------------------------------------------------------------------------------------------------------
input sample : number of test case then both the limits
1
1 10

output :-
2
3
5
7

No comments:

Post a Comment