June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
54
Task/Pernicious-numbers/AWK/pernicious-numbers.awk
Normal file
54
Task/Pernicious-numbers/AWK/pernicious-numbers.awk
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# syntax: GAWK -f PERNICIOUS_NUMBERS.AWK
|
||||
BEGIN {
|
||||
pernicious(25)
|
||||
pernicious(888888877,888888888)
|
||||
exit(0)
|
||||
}
|
||||
function pernicious(x,y, count,n) {
|
||||
if (y == "") { # print first X pernicious numbers
|
||||
while (count < x) {
|
||||
if (is_prime(pop_count(++n)) == 1) {
|
||||
printf("%d ",n)
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
else { # print pernicious numbers in X-Y range
|
||||
for (n=x; n<=y; n++) {
|
||||
if (is_prime(pop_count(n)) == 1) {
|
||||
printf("%d ",n)
|
||||
}
|
||||
}
|
||||
}
|
||||
print("")
|
||||
}
|
||||
function dec2bin(n, str) {
|
||||
while (n) {
|
||||
if (n%2 == 0) {
|
||||
str = "0" str
|
||||
}
|
||||
else {
|
||||
str = "1" str
|
||||
}
|
||||
n = int(n/2)
|
||||
}
|
||||
if (str == "") {
|
||||
str = "0"
|
||||
}
|
||||
return(str)
|
||||
}
|
||||
function is_prime(x, i) {
|
||||
if (x <= 1) {
|
||||
return(0)
|
||||
}
|
||||
for (i=2; i<=int(sqrt(x)); i++) {
|
||||
if (x % i == 0) {
|
||||
return(0)
|
||||
}
|
||||
}
|
||||
return(1)
|
||||
}
|
||||
function pop_count(n) {
|
||||
n = dec2bin(n)
|
||||
return gsub(/1/,"&",n)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue