Print Prime Numbers 1-100 in Pseudocode

  • Thread starter Thread starter NDiggity
  • Start date Start date
  • Tags Tags
    comp sci
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
1 reply · 4K views
NDiggity
Messages
53
Reaction score
0

Homework Statement


The problem is to find all the prime numbers between one and one-hundred and print them out in pseudocode.

Here is my attempt. The problem is that when it's false, isPrime will be false but when it tries to divide by the next number and it is true, it makes isPrime true. I'm not sure how to fix this. Help!

bool isPrime <-- true
int i
int j

for i <-- 1 to 100
for j <--2 to 10
if (i=1)
continue
if (i =2)
print i
continue
if (i = j)
continue
if (i % j != 0 AND i!=j)
isPrime= true
if (i % j = 0)
isPrime = false
if (isPrime = true)
print i
 
Physics news on Phys.org
Some comments, the big problem is last.

NDiggity said:
for i <-- 1 to 100
Why are you starting at 1, or even 2? You know 1 is not prime and 2 is prime, as you have these hardcoded as exceptional cases. Print that 2 is prime and start at 3. All that those exceptional cases do is add complexity to the program. A lot (an awful lot) of programming shops measure the "cyclomatic complexity" of code. A lot (not quite as many, but still a lot) of programming shops specifically ban the use of "continue".

for j <--2 to 10
Much better would be to end this loop at sqrt(i), or if that is not acceptable, at i-1. Doing either makes a lot more sense than ending at 10.

if (i % j != 0 AND i!=j)
isPrime= true
if (i % j = 0)
isPrime = false
This is the big problem. There are two problems here. First, any number j that divides some other number i means i is not prime. This logic does not test for primality! Another problem: You have a fall through case (i.e., there is no final else). Once again, many programming shops view this as a sign of sloppy programming. Even if a final else is not needed, it is better to put one in that explicitly does nothing. Doing so shows that the programmer has thought about all of the cases.

Bottom line: You really need to fix the primality testing logic. Fixing the loop bounds is a good idea as well.