I was writing code which finds special numbers (prime numbers between 1-10) and the code functions however I want it to list out how many numbers. Right now it says:
Enter smaller number (m): 4
Enter the larger number (n): 7
Special numbers: [5, 7]
Special numbers Brute force: [5, 7]
However I want it to say "special numbers = 2: [5,7]".
I tried adding an if statement but didn't know how to add it in to my code, I'll list the code below.
def main():
m = int(input("Enter smaller number (m): "))
n = int(input("Enter the larger number (n): "))
if m >= n:
print("Error: First number should be smaller than second")
special_nums = locate_special_numbers(m, n)
if len(special_nums) <= 5:
print("Special numbers are:", special_nums)
else:
first_three = special_nums[:3]
last_three = special_nums[-3:]
print("First three smallest special numbers:", first_three)
print("Last three biggest special numbers:", last_three)
# Brute force approach
special_numbers_brute_force = locate_special_numbers(m, n)
print("Special numbers Brute force:", special_numbers_brute_force)
# lines 33-39 are not executing as expected
def amount_of_special_numbers(m, n):
amount_of_special_numbersList = []
for num in range(m, n + 1):
if prime(num) and mirrored(num):
amount_of_special_numbersList.append(num)
print(
"The total number of special number is:",
len(amount_of_special_numbersList),
)
# Return the list after the first special number is found
return amount_of_special_numbersList
if __name__ == "__main__":
main()
I changed your code a bit and wrote the is_prime(num)
and locate_special_numbers(m, n)
functions.
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def locate_special_numbers(m, n):
prime_numbers = []
for num in range(m, n + 1):
if is_prime(num):
prime_numbers.append(num)
return prime_numbers
def main():
m = int(input("Enter smaller number (m): "))
n = int(input("Enter the larger number (n): "))
if m >= n:
print("Error: First number should be smaller than second")
special_nums = locate_special_numbers(m, n)
if len(special_nums) <= 5:
print("Special numbers are:",len(special_nums), ":", special_nums)
else:
first_three = special_nums[:3]
last_three = special_nums[-3:]
print("First three smallest special numbers:", first_three)
print("Last three biggest special numbers:", last_three)
# Brute force approach
special_numbers_brute_force = locate_special_numbers(m, n)
print("Special numbers Brute force:", special_numbers_brute_force)
if __name__ == "__main__":
main()
This gave me the output of:
Enter smaller number (m): 4
Enter the larger number (n): 7
Special numbers are: 2 : [5, 7]
Special numbers Brute force: [5, 7]
As you can see in the code, print("Special numbers are:",len(special_nums), ":", special_nums)
would work for you. If you wanted to use formatted strings print("Special numbers are: %d" %len(special_nums), ":", special_nums)
would also work although it would be harder to understand.
Hope this helps!