Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
prime numbers
#8
This is best described using an example. Lets say we want to determine if 36 is prime. It is not, really not. 36 has a lot of factors.
2 x 18
3 x 12
4 x 9
6 x 6 <- square root of 36
9 x 4
12 x 3
18 x 2

Notice that the factors below the square root are just swapped versions of factors above the square root. This is because of the Commutative property of multiplication which says "a x b = b x a". If we were testing for prime, we wouldn't have to test 18, because we already tested for 18 when we tested for 2. We don't have to test 13, because we already tested 13 when we tested 3. The largest number we ever have to test to determine if a number is prime is the square root of the number. Any potential factor greater than the square root has already been tested by the commutative property. Now apply this information to determining if 101 is prime.

To determine if 101 is prime, the largest potential factor we need to test is the square root of 101, 10.05. Round down to 10. Without any kind of optimization, we might test for prime using 2, 3, 4, 5, 6, 7, 8, 9, 10. This is already far better than testing 2 - 100 as potential factors, 10 times fewer divisions. But we can do even better than that.

We can factor some of the remaining potential factors
2
3
4 = 2 x 2
5
6 = 2 x 3
7
8 = 2 x 2 x 2
9 = 3 x 3
10 = 2 x 5

If a number is divisible by 4, 6, 8 or 10 (or any even number) it is also divisible by 2. Thus, any number that has an even factor also has 2 as a factor. This means the only even factor we ever have to test is 2. This cuts the list of potential factors almost in half; 2, 3, 5, 7, 9.

You probably also noticed that 9 can be factored to 3 x 3. For the same reason that any number that is a multiple of 2 (any even number) can be ignored as a potential factor, any number that is a multiple of 3 (or 5 or 7 or any of the other primes) can be ignored as a factor. There is no reason to test if 9 is a factor if you already ruled out that 3 is not a factor. However, it is not as easy to rule out multiples of primes as it is multiples of 2, so we will test if 101 is divisible by 9 and ignore that it is not optimal.

Quote:An algorithm to determine if a number is prime must:
1. Have a special test for 2, the only even prime number
2. Have a special test for numbers less than 2, all of which are not prime.
3. Only if the number > 2, test for prime using modulo and factors
a. If the number is divisible by a factor it is not prime.
b. If you tested all factors the number is prime

Step 3 is easily optimized to only test odd factors (read about the range() function).
carecavoador likes this post
Reply


Messages In This Thread
prime numbers - by astral_travel - Nov-03-2022, 08:50 PM
RE: prime numbers - by deanhystad - Nov-03-2022, 09:11 PM
RE: prime numbers - by astral_travel - Nov-03-2022, 09:53 PM
RE: prime numbers - by astral_travel - Nov-03-2022, 10:11 PM
RE: prime numbers - by deanhystad - Nov-04-2022, 11:06 AM
RE: prime numbers - by astral_travel - Nov-04-2022, 06:23 PM
RE: prime numbers - by astral_travel - Nov-04-2022, 06:48 PM
RE: prime numbers - by deanhystad - Nov-04-2022, 08:31 PM
RE: prime numbers - by deanhystad - Nov-04-2022, 08:49 PM
RE: prime numbers - by astral_travel - Nov-05-2022, 01:18 PM
RE: prime numbers - by deanhystad - Nov-05-2022, 01:48 PM
RE: prime numbers - by astral_travel - Nov-05-2022, 03:35 PM
RE: prime numbers - by astral_travel - Nov-05-2022, 01:49 PM
RE: prime numbers - by Yoriz - Nov-05-2022, 01:51 PM
RE: prime numbers - by deanhystad - Nov-05-2022, 02:06 PM
RE: prime numbers - by Yoriz - Nov-05-2022, 06:44 PM
RE: prime numbers - by astral_travel - Nov-05-2022, 06:52 PM
RE: prime numbers - by Yoriz - Nov-05-2022, 09:46 PM
RE: prime numbers - by deanhystad - Nov-06-2022, 02:09 AM
RE: prime numbers - by deanhystad - Nov-06-2022, 02:45 AM
RE: prime numbers - by astral_travel - Nov-07-2022, 08:08 PM
RE: prime numbers - by snippsat - Nov-06-2022, 11:17 AM
RE: prime numbers - by deanhystad - Nov-06-2022, 12:23 PM
RE: prime numbers - by astral_travel - Nov-06-2022, 02:47 PM
RE: prime numbers - by ndc85430 - Nov-06-2022, 04:06 PM
RE: prime numbers - by astral_travel - Nov-06-2022, 04:52 PM
RE: prime numbers - by deanhystad - Nov-07-2022, 08:35 PM
RE: prime numbers - by astral_travel - Nov-08-2022, 05:01 PM
RE: prime numbers - by astral_travel - Nov-08-2022, 09:23 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  prime numbers with iterator and generator cametan_001 8 2,050 Dec-17-2022, 02:41 PM
Last Post: cametan_001
  Return prime numbers from range krzyfigh 2 2,014 Apr-20-2020, 08:08 PM
Last Post: krzyfigh
  Prime numbers Anderi02 1 2,046 Oct-13-2019, 04:49 PM
Last Post: ichabod801
  first k non-prime numbers arycloud 11 7,628 Jul-09-2019, 02:19 PM
Last Post: abhi19935
  first k non prime numbers print bsrohith 7 7,764 Jun-20-2019, 10:48 AM
Last Post: arycloud
  Print Numbers starting at 1 vertically with separator for output numbers Pleiades 3 3,877 May-09-2019, 12:19 PM
Last Post: Pleiades
  Finding prime numbers creslin_black 7 4,528 Jul-20-2018, 02:28 PM
Last Post: grjmmr
  Prime Numbers OmarSinno 1 4,450 Sep-23-2017, 05:29 PM
Last Post: ichabod801
  prime numbers generator is generating non prime numbers? ixaM 2 4,558 Dec-18-2016, 01:35 PM
Last Post: ixaM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020