Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Vampire-number/Icon/vampire-number.icon
Normal file
26
Task/Vampire-number/Icon/vampire-number.icon
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
procedure main()
|
||||
write("First 25 vampire numbers and their fangs:")
|
||||
every fangs := vampire(n := seq())\25 do write(right(n,20),":",fangs)
|
||||
write("\nOther numbers:")
|
||||
every n := 16758243290880 | 24959017348650 | 14593825548650 do
|
||||
write(right(n,20),": ",vampire(n)|"toothless")
|
||||
end
|
||||
|
||||
procedure vampire(n)
|
||||
ns := string(n)
|
||||
if *ns % 2 = 1 then fail
|
||||
every (fangs := "") ||:= " "||fangCheck(n, *ns/2, f1 := 2 to integer(sqrt(n)), n/f1)
|
||||
if *fangs > 0 then return fangs
|
||||
end
|
||||
|
||||
procedure fangCheck(n, n2, f1, f2)
|
||||
if f1*f2 ~= n then fail
|
||||
if n2 ~= *(f1|f2) then fail
|
||||
if (f1|f2) % 10 ~= 0 then
|
||||
if csort(f1||f2) == csort(n) then return "("||f1||","||f2||")"
|
||||
end
|
||||
|
||||
procedure csort(s) # Adapted from csort(s) in Icon IPL
|
||||
every (s1 := "", c := !cset(s)) do every find(c, s) do s1 ||:= c
|
||||
return s1
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue