Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

Making a program parallel in Java - HELP

$
0
0

Hello @all,

I've only learnt a bit about parallelization of programs, but, I'm now facing what seems to be an embarassingly parallel situation.

I simply need to compute and list ALL twin primes below N specifically in Java.

I think I've done some decent algorithmic optimizations to tackle this.

But, this will be solely a speed competition, and my code runs in 2m and 46s for N=100.000.000

I was wondering how I can exploit Java's concurrency mechanism to speed up my code?

import java.io.*;
import java.lang.*;
import java.util.*;


public class Main
{
    public static int isprime(long x)
    {
        long max= (long) Math.sqrt(x);
        long i;
        long dx=4;
        for(i=5; i<=max; dx=-(dx-6),i+=dx)
        if( (x%i) ==0)
            return 0;
        return 1;
    }

    public static void main(String[] args)
    {
         long i,count=1;
          Scanner in = new Scanner(System.in);
          int n = in.nextInt();

            if(n>=3)
        System.out.printf("%d ", 3);
     for(i=5;i+2<=n;i+=6)
        if(isprime(i)==1 && isprime(i+2)==1)
        {
            System.out.printf("%d %d " ,i,i+2);
            count++;
        }
     //printf("\b \n\nTotal Primes within range: %d\n",count);
    }
}

If anyone could either help doing the paralellization thing or even improving the algorithm, I'd be really glad :)

Best,

Bruno


Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>