Converting a bunch of prime numbers into a set

53 Views Asked by At
for i in range(2, 100):
  prime = True
  for k in range(2, i):
    if i % k == 0:
      prime = False
      break
  if prime:
      print(i)

the Outcome is:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Is it possible for the outcome to be placed in a set or a list?

3

There are 3 best solutions below

0
Kira Yoshikage On BEST ANSWER

For set do something like this

st = set()
for i in range(2, 100):
  prime = True
  for k in range(2, i):
    if i % k == 0:
      prime = False
      break
  if prime:
      st.add(i)

print(st)

For list do something like this

lst = list()
for i in range(2, 100):
  prime = True
  for k in range(2, i):
    if i % k == 0:
      prime = False
      break
  if prime:
      lst.append(i)

print(lst)
0
creaple On

To record the answer, you need to declare a list outside the for loop. For example, let's call it primes.

Then, instead of writing print(i), use:

primes.append(i)

to add the number i to your list.

Here is the full code:

primes = []
for i in range(2, 100):
  prime = True
  for k in range(2, i):
    if i % k == 0:
      prime = False
      break
  if prime:
    primes.append(i)

print(primes)
0
President James K. Polk On

A nice one liner I've seen somewhere on this site is

[p for p in range(2, 100) if all (p%i!=0 for i in range(2, p))]

You can speed this up considerably for larger lists with several optimizations, e.g. using the ceiling(sqrt(p)) for the upper range limit of the i loop.

For a set, simply make it

{p for p in range(2, 100) if all (p%i!=0 for i in range(2, p))}