تمرین ۱۳:
اعداد اول بین دو عدد در پایتون
برنامهای به زبان پایتون بنویسید که دو عدد طبیعی m و n را از کاربر دریافت کند و اعداد اول بین آنها یعنی اعداد اول موجود در بازهی بستهی [m,n] را نمایش دهد و فراوانی (تعداد اعداد اول) و فراوانی نسبی (درصد اعداد اول به کل اعداد) را مشخص سازد.
#Prime Numbers in the Interval [m,n] March 29, 2023
#Programmer: Mohammad Rajabpur Email: info@pythonize.ir
def Prime(x):
#determines whether number x is prime or composite
r = 0
if x < 1:
r = -1 #not a natural number
else:
counter = 0
for i in range(1,int(x**0.5 + 1)):
if x%i==0:
counter += 1
if counter > 1:
break
if counter == 1:
r = 1 #prime number
elif counter > 1:
r = 0 #composite number
return r
def Main():
#The Interface between the User and the Program
print("Prime Numbers in the Interval between m & n")
print("To terminate the program: m or n = exit")
while True:
print("-------------------------------------------")
m = input("m = ")
m = m.lower()
if m == "exit":
break
n = input("n = ")
n = n.lower()
if n == "exit":
break
try:
m = int(m)
n = int(n)
if m < 1 or n < 1:
print("Error: m or n cannot be less than 1!")
elif m >= n:
print("Error: n has to be greater than m!")
else:
#stores the prime numbers of the interval in the list P
P = []
for i in range(m, n+1):
if Prime(i)==1:
P.append(i)
print("Total =", n+1-m)
print("Prime Numbers =", len(P))
print("Relative Frequency =", round((100*len(P))/(n+1-m),2),"%")
print(P)
except Exception as Error:
print(f"{Error=}")
Main()
>>>
==== RESTART: C:\Prime Numbers in an Interval.py ====
Prime Numbers in the Interval between m & n
To terminate the program: m or n = exit
-------------------------------------------
m = 1
n = 10
Total = 10
Prime Numbers = 5
Relative Frequency = 50.0 %
[1, 2, 3, 5, 7]
-------------------------------------------
m = 11
n = 20
Total = 10
Prime Numbers = 4
Relative Frequency = 40.0 %
[11, 13, 17, 19]
-------------------------------------------
m = 21
n = 30
Total = 10
Prime Numbers = 2
Relative Frequency = 20.0 %
[23, 29]
-------------------------------------------
m = 31
n = 40
Total = 10
Prime Numbers = 2
Relative Frequency = 20.0 %
[31, 37]
-------------------------------------------
m = 41
n = 50
Total = 10
Prime Numbers = 3
Relative Frequency = 30.0 %
[41, 43, 47]
-------------------------------------------
m = 51
n = 60
Total = 10
Prime Numbers = 2
Relative Frequency = 20.0 %
[53, 59]
-------------------------------------------
m = 61
n = 70
Total = 10
Prime Numbers = 2
Relative Frequency = 20.0 %
[61, 67]
-------------------------------------------
m = 71
n = 80
Total = 10
Prime Numbers = 3
Relative Frequency = 30.0 %
[71, 73, 79]
-------------------------------------------
m = 81
n = 90
Total = 10
Prime Numbers = 2
Relative Frequency = 20.0 %
[83, 89]
-------------------------------------------
m = 91
n = 100
Total = 10
Prime Numbers = 1
Relative Frequency = 10.0 %
[97]
-------------------------------------------
m = exit
>>>