PowerShell - sum-of-multiples

This commit is contained in:
Xevion
2021-11-26 02:30:29 -06:00
parent b6f26a5279
commit 4b5964861e
7 changed files with 150 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
Function Get-SumOfMultiples {
<#
.SYNOPSIS
Given a number, find the sum of all the unique multiples of particular numbers up to
but not including that number.
.DESCRIPTION
If we list all the natural numbers below 20 that are multiples of 3 or 5,
we get 3, 5, 6, 9, 10, 12, 15, and 18.
.PARAMETER Multiples
An array of the factors
.PARAMETER Limit
The value BELOW which we test for
.EXAMPLE
Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
Returns 23
#>
[CmdletBinding()]
Param(
[int[]]$Multiples,
[int]$Limit
)
$set = @{}
foreach ($Multiple in $Multiples) {
if ($Multiple -gt $Limit) { continue }
[int] $Maximum = [Math]::Floor($Limit / $Multiple)
if ($Multiple * $Maximum -ge $Limit) { $Maximum -= 1 }
1..$Maximum | % { $set[$_ * $Multiple] = $true }
}
return ($set.Keys | Measure-Object -Sum).Sum
}