One of the ways to solve this exercise is through Sieve of Eratosthenes. The idea, superficially, is to get the full list of values between 2 and N and remove those that are not primes. The pseudo-code, taken from the above source, is:
Input: an integer n > 1.
Let A be an array of Boolean values, indexed by integers 2 to n,
initially all set to true.
for i = 2, 3, 4, ..., not exceeding √n:
if A[i] is true:
for j = i2, i2+i, i2+2i, i2+3i, ..., not exceeding n:
A[j] := false.
Output: all i such that A[i] is true.
In Python, one way to implement it is:
import math
# Input: an integer n > 1.
N = int(input("N: "))
# Let A be an array of Boolean values, indexed by integers 2 to n, initially all set to true.
A = list(range(2, N))
# for i = 2, 3, 4, ..., not exceeding √n:
for i in range(2, int(math.sqrt(N)+1)):
# if A[i] is true:
if i in A:
# for j = i2, i2+i, i2+2i, i2+3i, ..., not exceeding n:
for j in range(i**2, N, i):
# A[j] := false.
if j in A: A.remove(j)
# Output: all i such that A[i] is true.
print(A)
If we enter with a value of 30 to N, we get the following output:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
See working on Ideone or in the Repl.it.
Hello Rodrigo, welcome to Stackoverflow in Portuguese, in order to solve your question we need to see the code you are using to solve your problem, it seems that you want the code running without having the effort to search on the subject.
– Laércio Lopes
As you check, mathematically, whether a number is prime or not?
– Jéf Bueno
num == int(input("Enter a number: ")) while num < 0: num == int(input("Invalid value! Enter a number again") n = 1 c = 0 while n < num: if n%1 == 0 and n%n == 0 the problem is that technically every number divided by 1 and by itself has as rest zero, what condition I can use to break this?
– Rodrigo Costa