Распараллелить серию счастливых чисел - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужна помощь в распараллеливании следующей последовательной задачи для нахождения ряда счастливых чисел https://en.wikipedia.org/wiki/Lucky_number. Может кто-нибудь помочь мне решить эту проблему с переменным числом потоков (от 1 до 8). Большое спасибо.

import java.util.Scanner;

public class Main {

public static void isLucky(int n) {
    int numlf=n;
    int mvdelloc=2;
    int arr[]=new int[n+1];

    // Insert value to the array
    for(int i=1;i<=n;++i)
    {
        arr[i]=i;
    }

    //lucky series logic
    int delloc=2;
    while (delloc<=numlf )
    {
        //Delete array
        int temp=delloc;
        while(delloc<=n)
        {
            if(arr[delloc]!=0)
            {
                arr[delloc]=0;
                numlf--;
            }
            delloc+=temp;
        }
        // Arrange Array
        for(int j=1;j<=n-numlf;++j)
        {
            for(int k=1;k<=n;++k)
            {
                if(arr[k]==0 && k+1<=n)
                {
                    arr[k]=arr[k+1];
                    arr[k+1]=0;
                }
            }
        }
//             Display Arrange array
        System.out.println("Display arranged array");
        for(int k=1;k<=numlf;++k)
        {
            System.out.print(arr[k]+" ");
        }
        delloc=arr[mvdelloc];
        ++mvdelloc;
        System.out.println();
    }

    //Display final result
    System.out.println();
    System.out.print("your luck NUM : ");
    for(int i=1;i<=numlf;++i)
    {
        System.out.print(arr[i]+" ");
    }
}
public static void main(String[] args) {
    long startTime = System.nanoTime();
//      for: 25640 program takes 5 minutes to execute
    isLucky(25640);
    long endTime = System.nanoTime();
    long timeElapsed = endTime - startTime;
    System.out.println("\nExecution time in minutes : " +(float) timeElapsed / 1000000 / 1000 /60 );
}

}

Мне нужно запустить 1, 2, 3, 4, 5, 6, 7, 8 потоков, чтобы увидеть, как сокращается время выполнения.

...