在本教程中,我们将看到不同的方法来查找每种方法所需的质数和时间。我们将使用时间模块来计算执行时间。
这是查找质数的一般方法。
如果数字小于或等于1,则返回False。
如果数字可被任何数字整除,则该函数将返回False。
循环后,返回True。
# importing time module import time # checking for prime def is_prime(n): if n <= 1: return False else: for i in range(2, n): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
如果运行上面的程序,您将得到以下结果。
Total primes in the range 9594 Execution time: 63.1301212310791
在这种方法中,我们通过将迭代次数切成n的平方根来减少迭代次数。
让我们看一下代码。
# importing time module import time # importing math module for sqrt function import math # checking for prime def is_prime(n): if n <= 1: return False else: # iterating loop till square root of n for i in range(2, int(math.sqrt(n)) + 1): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
如果运行上面的程序,您将得到以下结果。
Total primes in the range 9592 Execution time: 0.2039644718170166
在前面的方法中,我们检查了偶数。我们都知道,偶数除两个外都不是质数。因此,在此方法中,我们将删除所有偶数以减少时间。
# importing time module import time # importing math module for sqrt function import math # checking for prime def is_prime(n): # checking for less than 1 if n <= 1: return False # checking for 2 elif n == 2: return True elif n > 2 and n % 2 == 0: return False else: # iterating loop till square root of n for i in range(3, int(math.sqrt(n)) + 1, 2): # checking for factor if n % i == 0: # return False return False # returning True return True # starting time start_time = time.time() primes = 0 for i in range(100000): if is_prime(i): primes += 1 print(f'Total primes in the range {primes}') # ending time end_time = time.time() print(f'Execution time: {end_time - start_time}')
如果运行上面的程序,您将得到以下结果。
Total primes in the range 9592 Execution time: 0.10342741012573242