求 100万内的所有素数

方法一:

for i in range(3,1000000,2):
    m = i ** 0.5
    for j in range(3,i,2):
        if i %j == 0:
            break
   else:
     print(i)

 

n = 1000000
for i in range(2,n):
for j in range(2,i):
if i % j == 0:
break
else:
print(i)

 

n = 1000

for i in range(3, n, 2):
    flag = False
    for j in range(3, i, 2):
        if i % j == 0:
            flag = True
            break
    if not flag:
        print(i)

 

 

 

使用时间函数计算效率:

import datetime

# start = datetime.datetime.now()
# count = 0
# for i in range(2,1000000):
#     for j in range(2,x):
#         if i % j == 0:
#             break
#     else:
#         count += 1
# delata = (datetime.datetime.now() - start).total_seconds()
#
# print(1,delata,count)

print('-------------------')

start = datetime.datetime.now()

count = 0

for i in range(2,1000000):
    for j in range(2,int(i ** 0.5) + 1):
        if i % j == 0:
            break
    else:
        count += 1
delata = (datetime.datetime.now() - start).total_seconds()

print(2,delata,count)

print('-------------------')

start = datetime.datetime.now()
count = 1

for i in range(3,1000000,2):
    for j in range(2,int(i ** 0.5) + 1):
        if i % j == 0:
            break
    else:
        count +=1
delata = (datetime.datetime.now() - start).total_seconds()

print(3,delata,count)

print('----------------------------')

start = datetime.datetime.now()
count = 1

for i in range(3,1000000,2):
    for j in range(3,int(i ** 0.5) + 1,2):
        if i % j == 0:
            break
    else:
        count +=1
delata = (datetime.datetime.now() - start).total_seconds()

print(4,delata,count)
print('--------------------')

start = datetime.datetime.now()
count = 1

for i in range(3,1000000,2):
    if i > 10 and i % 5 == 0:
        continue
    for j in range(2,int(i ** 0.5) + 1):
        if i % j == 0:
            break
    else:
        count +=1
delata = (datetime.datetime.now() - start).total_seconds()

print(5,delata,count)

 

import datetime

start = datetime.datetime.now()

count = 0

for i in range(3, 100000, 2):
    if i > 10 and i % 5 == 0:
        continue
    for j in range(2, int(i ** 0.5) + 1):
        if i % j == 0:
            break
    else:
        count += 1

delta = (datetime.datetime.now() - start).total_seconds()

 

posted @ 2020-03-20 21:10  Alrenn  阅读(346)  评论(0)    收藏  举报