编写一个程序,求2-n的素数,n由键盘输入,循环产量分别从2到n,2到(int)sqrt(n),分别测出两个循环的所用时间
时间: 2024-02-25 10:57:57 浏览: 61
好的,我可以帮你解决这个问题。以下是Python代码实现:
```python
import time
import math
def is_prime(num):
if num < 2:
return False
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
return False
return True
n = int(input("请输入一个正整数:"))
start_time = time.time()
prime_list1 = []
for num in range(2, n+1):
if is_prime(num):
prime_list1.append(num)
end_time1 = time.time()
print("第一个循环所用时间:", end_time1 - start_time)
start_time = time.time()
prime_list2 = []
for num in range(2, n+1):
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
break
else:
prime_list2.append(num)
end_time2 = time.time()
print("第二个循环所用时间:", end_time2 - start_time)
print("2到", n, "的素数为:", prime_list1)
assert prime_list1 == prime_list2
```
运行程序后,输入一个正整数n,程序会输出2到n之间的所有素数,并且分别计算两个循环所用的时间。
其中,`is_prime`函数用于判断一个数是否为素数,它采用的是试除法,从2到根号num进行循环判断。第一个循环直接调用`is_prime`函数判断每个数是否为素数,第二个循环只循环2到根号num并进行判断。
希望这个程序能够解决你的问题。
阅读全文