First of all, I have just started studying computer science by myself and maybe I just need some clarification of what "polynomial time" means regarding the time complexity of an algorithm and references to study it well.
As I have understood it, whether integer factorization can be done in polynomial time is still an open question and, as this article in wikipedia (https://en.wikipedia.org/wiki/Integer_factorization) puts it,
When the numbers are very large, no efficient, non-quantum integer factorization algorithm is known; an effort by several researchers concluded in 2009, factoring a 232-digit number (RSA-768), utilizing hundreds of machines took two years and the researchers estimated that a 1024-bit RSA modulus would take about a thousand times as long.
So, trying to see that for myself, I have written a very naive code in MATLAB checking it with prime numbers up to 15 digits; the reasoning being that if I can check if a number is prime fast, I can easily modify the code to give me the factorization fast.
The time it takes the code to check if a number is prime doesn't grow exponentially with the input.
function=prime(n) tic f=floor(sqrt(n)); for i=2:f if rem(n,i)~=0 b=0; else b=1; disp(i) break end end if b==0 disp('prime') else disp('not prime') end toc end
And so I go back to the question in the title. What is wrong with my reasoning?