如何用Python计算质数
1、我们的思路是:循环计算1-1000内的质数,从2开始做除法运算,一直到数字本身减一,根据余数判断是否是质数,(原因是定义中 除了1和它自身外,不能被其他自然数整除)如果是质数就输出这个数字。
2、#方法1(正向思维,看的是循环完后有几个余数,速度稍慢,0.15秒左右)酆璁冻嘌for i in range(2,1000 + 1): #用变量i从2-1000循环(因为1不是质数,且比较特殊),作为要测试的数字,Python中是循环到目标数字减一的位置,所以给1000加1 n = 0 #设置变量n记录次数 for j in range(2,i): #用变量j从 数字2-变量i 循环,Python中是循环到目标数字减一的位置,正好是数字本身减一,所以无需i+1或i-1 if i % j != 0: #如果要测试的数字除以变量j有余数,就使次数n加1 n += 1 ### if n == i - 2: # i-2表示变量i除了1和它自身外不能被其他自然数整除的次数, # n是我们计算出来的次数,只要数字不能被变量j整除就记一次,这样就可以判断数字是否是质数 print(i,end = ',') #如果是质数,就输出,中间用“,”分开
3、#方法2(逆向思维,看的是循环中间是否存在整除的现象,速度稍快,0.01秒左右)for i in range(2,1000 + 1): #用变量i从2-1000循环(因为1不是质数,且比较特殊),作为要测试的数字,Python中是循环到目标数字减一的位置,所以给1000加1 n = 0 #设置变量n记录是否是质数。如果最终n为1,就表示不是质数;如果n仍然为0,说明这个数字是质数 for j in range(2,i): #用变量j从 数字2-变量i 循环,Python中是循环到目标数字减一的位置,正好是数字本身减一,所以无需i+1或i-1 if i % j == 0: #如果要测试的数字除以变量j没有余数,就把n设为1,并退出循环,因为这样的数字一定不是质数 n = 1 break if n == 0: #如果n仍为0,说明这个数字是质数 print(i,end = ',') #如果是质数,就输出,中间用“,”分开
4、#如果要计算时间,请添加一些代码(如下)import timestart1 = time.time(像粜杵泳)#方法1for i in range(2,1000 + 1): #用变量i从2-1000循环(因为1不是质数,且比较特殊),作为要测试的数字,Python中是循环到目标数字减一的位置,所以给1000加1 n = 0 #设置变量n记录次数 for j in range(2,i): #用变量j从 数字2-变量i 循环,Python中是循环到目标数字减一的位置,正好是数字本身减一,所以无需i+1或i-1 if i % j != 0: #如果要测试的数字除以变量j有余数,就使次数n加1 n += 1 ### if n == i - 2: # i-2表示变量i除了1和它自身外不能被其他自然数整除的次数, # n是我们计算出来的次数,只要数字不能被变量j整除就记一次,这样就可以判断数字是否是质数 print(i,end = ',') #如果是质数,就输出,中间用“,”分开end1 = time.time()print('\n')start2 = time.time()#方法2for i in range(2,1000 + 1): #用变量i从2-1000循环(因为1不是质数,且比较特殊),作为要测试的数字,Python中是循环到目标数字减一的位置,所以给1000加1 n = 0 #设置变量n记录是否是质数。如果最终n为1,就表示不是质数;如果n仍然为0,说明这个数字是质数 for j in range(2,i): #用变量j从 数字2-变量i 循环,Python中是循环到目标数字减一的位置,正好是数字本身减一,所以无需i+1或i-1 if i % j == 0: #如果要测试的数字除以变量j没有余数,就把n设为1,并退出循环,因为这样的数字一定不是质数 n = 1 break if n == 0: #如果n仍为0,说明这个数字是质数 print(i,end = ',') #如果是质数,就输出,中间用“,”分开end2 = time.time()print('\n\n','方法1所用时间:',end1 - start1,'方法2所用时间:',end2 - start2)