Factorising natural numbers

Integer factorisation

Trial division

We have x

Divide by numbers between 2 and x

Only need to go to sqrt x

Don’t need to divide by even numbers other than 2

algorithm for checking if number is a prime

loop up dividing number from 2

if divides, add factor list and divide target number by that

stop when i reaches number

eg for 45

divide 2? no

divide 3? yes :> 15

divide 3? yes :> 5

divide 4? no

divide 5? yes :> 1

6>1 so stop

number is prime if list just contains target

don’t have to worry about including non primes in list, as will already have divded by that amount

Fermat’s method

Identify the integer as the difference of two squares, and use this.


We use the midpoint of the two as \(c=\dfrac{a+b}{2}\)

This only works for odd numbers. If we have

The we have:

  • \(a=c+d\)

  • \(b=c-d\)

  • \(x=(c+d)(c-d)\)

  • \(x=c^2-d^2\)

We can test this by trying \(a\) to get \(a^2-x\), and seeing if this is a square number.