### Project Euler - Problem 30 Redux (using Parallel)

The original post Project Euler - Problem 30 was done some time ago, and I recently read about using parallel methods to improve performance, and in this case, Parallel reduces execution time by 33%.

Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits. Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.

open System

open System.Threading

open System.Threading.Tasks

let isNarcissistic num power =

let numAsString = num.ToString()

let arr = [for i=0 to (numAsString.Length - 1) do

yield (float(numAsString.Chars(i).ToString()))**power]

if num = int(List.sum arr) then

num

else

0

let GetAllNarcissistic2_Start = System.DateTime.UtcNow

let GetAllNarcissistic2 =

[|2..999999|]

|> Array.Parallel.map (fun x -> isNarcissistic x 5.0)

|> Array.sum

printfn "%f" ((System.DateTime.UtcNow).Subtract(GetAllNarcissistic2_Start).TotalSeconds)

**Description**Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits. Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.

**Solution (using Parallel)**

open System

open System.Threading

open System.Threading.Tasks

let isNarcissistic num power =

let numAsString = num.ToString()

let arr = [for i=0 to (numAsString.Length - 1) do

yield (float(numAsString.Chars(i).ToString()))**power]

if num = int(List.sum arr) then

num

else

0

let GetAllNarcissistic2_Start = System.DateTime.UtcNow

let GetAllNarcissistic2 =

[|2..999999|]

|> Array.Parallel.map (fun x -> isNarcissistic x 5.0)

|> Array.sum

printfn "%f" ((System.DateTime.UtcNow).Subtract(GetAllNarcissistic2_Start).TotalSeconds)

## Comments

## Post a Comment