Skip to content

Instantly share code, notes, and snippets.

@wasit-shafi
Created March 6, 2020 19:40
Show Gist options
  • Save wasit-shafi/a50802af35fc31be0bbcc45873edddc5 to your computer and use it in GitHub Desktop.
Save wasit-shafi/a50802af35fc31be0bbcc45873edddc5 to your computer and use it in GitHub Desktop.
/**
@author wasitshafi
@since 18-02-2020
*/
import java.util.TreeSet;
public class PrimeNumberOptimalApproach
{
public static boolean isPrime(int n)
{
for(int i = 2 ; i * i <= n ; i++)
if(n % i == 0)
return false;
return true;
}
public static void main(String... args)
{
int n = Integer.MAX_VALUE, j;
TreeSet<Integer> primes = new TreeSet<>();
TreeSet<Integer> primes2 = new TreeSet<>();
TreeSet<Integer> primes3 = new TreeSet<>();
n = 1000000; // because i was getting out of memory on my PC, although it worked fine for large number on our computer lab Desktop Workstations
// refer online : https://www.free-online-calculator-use.com/prime-number-generator.html
//n = 104730;
// Method1
loop:for(int i = 2 ; i <= n ; i++)
{
for(j = 2 ; j * j <= i ; j++)
if(i % j == 0) continue loop;
primes.add(i);
}
// Method2
primes2.add(2);
primes2.add(3);
primes2.add(5);
loop2:for(int i = 5 ; i <= n ; i++)
{
if(i % 2 == 0 || i % 3 == 0 || i % 5 == 0) continue loop2;
for(j = 1 ; 6 * j - 1 <= Math.sqrt(i) ; j++)
{
if(i % (6 * j - 1) == 0) continue loop2;
if(6 * j + 1 <= Math.sqrt(i)) if(i % (6 * j + 1) == 0) continue loop2;
}
primes2.add(i);
}
//Method2.1
primes3.add(2);
primes3.add(3);
primes3.add(5);
loop2:for(int i = 5 ; i <= n ; i++)
{
if(i % 2 == 0 || i % 3 == 0 || i % 5 == 0) continue loop2;
for(j = 1 ; 6 * j - 1 <= Math.sqrt(i) ; j++)
{
if(isPrime(6 * j - 1))
{
if(i % (6 * j - 1) == 0) continue loop2;
}
if(isPrime(6 * j + 1))
{
if(6 * j + 1 <= Math.sqrt(i)) if(i % (6 * j + 1) == 0) continue loop2;
}
}
primes3.add(i);
}
//System.out.println();
//System.out.println("primes : " + primes);
//System.out.println("primes2 : " + primes2);
//System.out.println("primes3 : " + primes3);
System.out.println("|primes| : " + primes.size());
System.out.println("|primes2| : " + primes2.size());
System.out.println("|primes3| : " + primes3.size());
System.out.println("Primes.equals(Primes2) : " + primes.equals(primes2));
System.out.println("Primes2.equals(Primes3) : " + primes2.equals(primes3));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment