An Abundant number is a number n for which the   sum of divisors   σ(n) > 2n,

or,   equivalently,   the   sum of proper divisors   (or aliquot sum)       s(n) > n.



E.G.

12   is abundant, it has the proper divisors     1,2,3,4 & 6     which sum to   16   ( > 12 or n);

       or alternately,   has the sigma sum of   1,2,3,4,6 & 12   which sum to   28   ( > 24 or 2n).



Abundant numbers are common, though even abundant numbers seem to be much more common than odd abundant numbers.

To make things more interesting, this task is specifically about finding   odd abundant numbers.



Task
Find and display here: at least the first 25 abundant odd numbers and either their proper divisor sum or sigma sum.
Find and display here: the one thousandth abundant odd number and either its proper divisor sum or sigma sum.
Find and display here: the first abundant odd number greater than one billion (109) and either its proper divisor sum or sigma sum.


References

   OEIS:A005231: Odd abundant numbers (odd numbers n whose sum of divisors exceeds 2n)
   American Journal of Mathematics, Vol. 35, No. 4 (Oct., 1913), pp. 413-422 - Finiteness of the Odd Perfect and Primitive Abundant Numbers with n Distinct Prime Factors (LE Dickson)


divisors := 
    [:nr |
        |divs|
 
        divs := Set with:1.
        "no need to check even factors; we are only looking for odd nrs"
        3 to:(nr integerSqrt) by:2 do:[:d | nr % d = 0 ifTrue:[divs add:d; add:(nr / d)]].
        divs.
    ].
 
isAbundant := [:nr | (divisors value:nr) sum > nr].
 
"from set of abdundant numbers >= minNr, print nMinPrint-th to nMaxPrint-th"
printNAbundant := 
    [:minNr :nMinPrint :nMaxPrint |
        |count divs|
 
        count := 0.
        minNr to:Infinity positive doWithExit:[:nr :exit |
            (nr odd and:[isAbundant value:nr]) ifTrue:[
                count := count + 1.
                count >= nMinPrint ifTrue:[
                    divs := divisors value:nr.
                    Transcript
                        show:nr; show:' -> '; show:divs asArray sorted;
                        show:' sum = '; showCR:divs sum.
                ].
                count >= nMaxPrint ifTrue: exit
            ]
        ]
    ].
 
Transcript showCR:'first 25 odd abundant numbers:'.
"from set of abdundant numbers >= 3, print 1st to 25th"
printNAbundant value:3 value:1 value:25.                
 
Transcript cr; showCR:'first odd abundant number above 1000000000:'.
"from set of abdundant numbers >= 1000000000, print 1st to 1st"
printNAbundant value:1000000000 value:1 value:1.        
 
Transcript cr; showCR:'first odd abundant number above 1000000000000:'.
"from set of abdundant numbers >= 1000000000, print 1st to 1st"
printNAbundant value:1000000000000 value:1 value:1.        
 
Transcript cr; showCR:'the 1000th odd abundant number is:'.
"from set of abdundant numbers>= 3, print 1000th to 1000th"
printNAbundant value:3 value:1000 value:1000.