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.