52 lines
727 B
Plaintext
52 lines
727 B
Plaintext
CARD FUNC SumDigits(CARD n)
|
|
CARD res,a
|
|
|
|
res=0
|
|
WHILE n#0
|
|
DO
|
|
res==+n MOD 10
|
|
n==/10
|
|
OD
|
|
RETURN (res)
|
|
|
|
CARD FUNC PrimeFactors(CARD n CARD ARRAY f)
|
|
CARD a,count
|
|
|
|
a=2 count=0
|
|
DO
|
|
IF n MOD a=0 THEN
|
|
f(count)=a
|
|
count==+1
|
|
n==/a
|
|
IF n=1 THEN
|
|
RETURN (count)
|
|
FI
|
|
ELSE
|
|
a==+1
|
|
FI
|
|
OD
|
|
RETURN (0)
|
|
|
|
PROC Main()
|
|
CARD n,i,s1,s2,count,tmp
|
|
CARD ARRAY f(100)
|
|
|
|
FOR n=4 TO 10000
|
|
DO
|
|
count=PrimeFactors(n,f)
|
|
IF count>=2 THEN
|
|
s1=SumDigits(n)
|
|
s2=0
|
|
FOR i=0 TO count-1
|
|
DO
|
|
tmp=f(i)
|
|
s2==+SumDigits(tmp)
|
|
OD
|
|
IF s1=s2 THEN
|
|
PrintC(n) Put(32)
|
|
FI
|
|
FI
|
|
Poke(77,0) ;turn off the attract mode
|
|
OD
|
|
RETURN
|