Showing posts with label generate prime numbers in java. Show all posts
Showing posts with label generate prime numbers in java. Show all posts

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