Reputation: 559
I wrote the following code which prints prime numbers up to the desired number.
def prime_number(number1):
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
print(desired_num)
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
prime_number(number2)
The output I get is similar to the following one, which becomes very cumbersome for a list with many numbers.
2
3
5
7
The output I want is similar to the following one.
[2, 3, 5, 7]
Do you have any suggestion on how to get the desired output?
Upvotes: 1
Views: 718
Reputation: 1295
A simple idea would be to store the list of primes in a python built-in list and then after all simple print it in your favorite format! As simple as that.
def prime_number(number1):
primes = [] # An empty list here, that will be populated with primes!
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
primes.append(desired_num)
print "[" + ",".join(map(str, primes)) + "]"
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
primes = prime_number(number2)
Upvotes: 1
Reputation: 2334
You can take two ways to print. Either store it in a list and then print or print it serially.
Approach 1 Use list and then print it as comma separated
:
import time
def prime_number(number1):
output_list = list()
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
output_list.append(desired_num)
return output_list
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
output_list = prime_number(number2)
print (",".join(output_list))
Approach 2 Print the numbers in function itself serially using end
:
import time
def prime_number(number1):
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
print(desired_num,end = " ")
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
prime_number(number2)
Upvotes: 0
Reputation: 1471
To achieve your goal (have formatted output) you have to introduce some changes to your code, in other words, make it "more pythonic":
import time
from pprint import pprint, pformat
from typing import Iterable
def prime_number(number1):
"""
generator
:rtype: Iterable[int]
:type number1: int
"""
for desired_num in range(1, int(number1) + 1):
if desired_num > 1:
for i in range(2, desired_num):
if (desired_num % i) == 0:
break
else:
yield desired_num
number2 = int(raw_input("Enter any number :- "))
primes = pformat(list(prime_number(number2)))
print("Prime numbers between 1 and {} are :- {}".format(number2, primes))
What I used here is a pipe: pformat(list(prime_number(...)))
generator -> list [1, 2, 3] -> text '[1, 3, ]'.
Then I put the text and number2
into a formatted string, and sent to print.
If you are beginner in python and don't familiar with the generators
concept, you may rewrite the prime_number
function to use a simple .append
to a list instead of yielding it and then return the whole list.
Upvotes: 3
Reputation: 56
It could be better if using an array to store those prime numbers, then print it out.
import time
def prime_number(number1):
primes = []
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
primes.append(desire_num)
return primes
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
print(prime_number(number2))
Upvotes: 1
Reputation: 71580
Use append
to a new list:
import time
def prime_number(number1):
l=[]
for desired_num in range(1,int(number1)+1):
if desired_num > 1:
for i in range(2,desired_num):
if (desired_num % i) == 0:
break
else:
l.append(desired_num)
print(l)
number2 = int(raw_input ("Enter any number :- "))
print "Prime numbers between 1 and", number2, "are :-"
start = time.time()
prime_number(number2)
print(time.time() - start)
Upvotes: 2