Quote:As 12 is the smallest abundant number, 1 + 2 + 3 + 4 + 6 = 16
Check when your code should stop to habe all possible factor of number.
Quote:I really don't know what am I doing wrong
May be it is time to learn the debugger, it is a great learning tool.
Quote:Could you help me make it work?
Your code do not behave the way you expect, or you don't understand why !
There is an almost universal solution: Run your code on debugger step by step, inspect variables.
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't know what your code is supposed to do, it don't find bugs, it just help you to by showing you what is going on. When the code don't do what is expected, you are close to a bug.
To see what your code is doing: Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute.
Debugger - Wikipedia, the free encyclopedia
Mastering Debugging in Visual Studio 2010 - A Beginner's Guide
Basic Debugging with Visual Studio 2010 - YouTube
27.3. pdb — The Python Debugger — Python 3.6.1 documentation
Debugging in Python | Python Conquers The Universe
pdb – Interactive Debugger - Python Module of the Week
The debugger is here to only show you what your code is doing and your task is to compare with what it should do.
Quote:and if you know how to optimize it, it would be great as well if you could tell me.
Optimization is a huge subject, teaching you is out if scope of this little text box.
Being good at optimization imply:
- having a very good understanding of code to optimize.
- Having extended knowledge of data structures and algorithms.
- Being seasoned at optimizing will help you too.
I wrote this article about integer factorization, it show how the trial division algorithm can be optimized. Every factor of a number is compound of prime factors of the number.
Integer Factorization: Trial Division Algorithm
Advise: making a few functions instead of a monolithic bloc of code helps to separate concerns, it simplify things when you try different solutions and for testing.