RosettaCodeData/Task/Amicable-pairs/PowerShell/amicable-pairs.psh

30 lines
678 B
Plaintext

function Get-ProperDivisorSum ( [int]$N )
{
$Sum = 1
If ( $N -gt 3 )
{
$SqrtN = [math]::Sqrt( $N )
ForEach ( $Divisor1 in 2..$SqrtN )
{
$Divisor2 = $N / $Divisor1
If ( $Divisor2 -is [int] ) { $Sum += $Divisor1 + $Divisor2 }
}
If ( $SqrtN -is [int] ) { $Sum -= $SqrtN }
}
return $Sum
}
function Get-AmicablePairs ( $N = 300 )
{
ForEach ( $X in 1..$N )
{
$Sum = Get-ProperDivisorSum $X
If ( $Sum -gt $X -and $X -eq ( Get-ProperDivisorSum $Sum ) )
{
"$X, $Sum"
}
}
}
Get-AmicablePairs 20000