Is Trial Division Primality Check Considered in Polynomial Time?

  • Context: Undergrad 
  • Thread starter Thread starter mourinho123
  • Start date Start date
  • Tags Tags
    Division trial
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 4K views
mourinho123
Messages
1
Reaction score
0
Greetings,

This is very simple, and obviously I'm missing something trivial, but I still don't get it.

An algorithm is said to run in polynomial time if it runs in O(n^K) time.

That's why dijkstra for example, who runs in O(V^2), runs in polynomial time.

That said, my doubt is the following:
If a brute-force trial division primality check algorithm, runs in O(n^(1/2)), why it isn't considered in polynomial time?

Thanks beforehands,
Mourinho
 
Physics news on Phys.org
The running time of an algorithm is usually expressed in terms of the size of the input data.

If you want to test N for primality, the amount of data you need to need to give your algorithm is O(log N). (e.g. if your algorithm works in base 10, the size of the input is the number of decimal digits it takes to write N, so the input size is (log N) / log(10))

So, the size of the input is (log N), and the amount of work necessary is N^(1/2)... which is exponential in the size of the input.



(Of course, it would be accurate to say that the running time is polynomial in N)
 
The AKS primality test takes O(n6) time* to check if an n-bit number is prime. Trial division takes O(2n/2).

* The exponent depends on the version used. I think the original was O(n12) time and the best versions so far are conjectured to run in O(n4) time.