[Tutor] python Task
Steven D'Aprano
steve at pearwood.info
Fri Oct 1 01:45:29 CEST 2010
On Fri, 1 Oct 2010 08:38:31 am Dipo Elegbede wrote:
> 4.4 An integer greater than 1 is said to be prime if it is divisible
> by only 1 and itself. For example,
> 2, 3, 5 and 7 are prime numbers, but 4, 6, 8 and 9 are not.
> a) Write a function that determines whether a number is prime.
The first thing you need to know is that you can find out the remainder
after division by using the % operator. For example:
10 % 5 => 0 # 10 = 5*2
11 % 5 => 1 # 11 = 5*2 + 1
12 % 5 => 2 # 12 = 5*2 + 2
and so forth.
So you can check whether a number is divisible by another with:
if n % divisor == 0:
print "n is exactly divisible by divisor"
else:
print "n is not divisible by divisor"
So to find out whether a number n is prime, you need to check whether it
is divisible by each whole number starting from 2:
for divisor in range(2, n):
if n is divisible by divisor then n is not prime
# outside the loop
print "prime"
The above does a LOT of unnecessary work. Some improvements:
* Once you've discovered that a number is not prime, you can
exit the loop.
* There's no need to test every number up to n-1. Think about
what the greatest number you need to test would be.
* If a number isn't divisible by 2, then it can't possibly be
divisible by 4, 6, 8, 10, ... either. So apart from 2, there's
no need to check even numbers.
--
Steven D'Aprano
More information about the Tutor
mailing list