| www.delorie.com/gnu/docs/calc/calc_56.html | search |
![]() Buy the book! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A number j is a divisor of n if `n % j = 0'. The first step is to get a vector that identifies the divisors.
2: 30 2: [0, 0, 0, 2, ...] 1: [1, 1, 1, 0, ...]
1: [1, 2, 3, 4, ...] 1: 0 .
. .
30 RET v x 30 RET s 1 V M % 0 V M a = s 2
|
This vector has 1's marking divisors of 30 and 0's marking non-divisors.
The zeroth divisor function is just the total number of divisors. The first divisor function is the sum of the divisors.
1: 8 3: 8 2: 8 2: 8
2: [1, 2, 3, 4, ...] 1: [1, 2, 3, 0, ...] 1: 72
1: [1, 1, 1, 0, ...] . .
.
V R + r 1 r 2 V M * V R +
|
Once again, the last two steps just compute a dot product for which a simple * would have worked equally well.
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |