September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -0,0 +1,44 @@
function Select-PerniciousNumber
{
[CmdletBinding()]
[OutputType([int])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$InputObject
)
Begin
{
function Test-Prime ([int]$n)
{
$n = [Math]::Abs($n)
if ($n -eq 0 -or $n -eq 1) {return $false}
for ($m = 2; $m -le [Math]::Sqrt($n); $m++)
{
if (($n % $m) -eq 0) {return $false}
}
return $true
}
[scriptblock]$popCount = {(([Convert]::ToString($this, 2)).ToCharArray() | Where-Object {$_ -eq '1'}).Count}
}
Process
{
foreach ($object in $InputObject)
{
$object | Add-Member -MemberType ScriptProperty -Name PopCount -Value $popCount -Force -PassThru | ForEach-Object {
if (Test-Prime $_.PopCount)
{
$_
}
}
}
}
}

View file

@ -0,0 +1,9 @@
$start, $end = 0, 999999
$range1 = $start..$end | Select-PerniciousNumber | Select-Object -First 25
"First {0} pernicious numbers:`n{1}`n" -f $range1.Count, ($range1 -join ", ")
$start, $end = 888888877, 888888888
$range2 = $start..$end | Select-PerniciousNumber
"Pernicious numbers between {0} and {1}:`n{2}`n" -f $start, $end, ($range2 -join ", ")