0006-编程打卡:判断99~1001间有多少素数并打印
本帖最后由 不二如是 于 2022-8-29 17:47 编辑**** Hidden Message *****
一星答案:
from math import sqrt
from sys import stdout
h = 0
leap = 1
#利用sqrt()缩小范围
for m in range(99,1001):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print('%-4d' % m)
h += 1
if h % 10 == 0:
print('')
leap = 1
print('总计: %d' % h)
list1=[]
list2=[]
count=0
for i in range(99,1001):
for j in range(2,int(i**0.5)+1):
if i%j==0:
list1.append(i)
for m in range(99,1001):
list2.append(m)
for a in list2:
if a not in list1:
count+=1
print(a,end="")
print('总计%d个素数' % count)
二星答案:
def prime(s, e):
flag = 1
count = 0
for i in range(s, e, 2):
for j in range(2, int(i ** 0.5)+1):
if i % j == 0:
flag = 0
break
if flag:
print('{:>{}}'.format(i, len(str(e))), end=' ')
count += 1
if count == 10:
print()
count = 0
else:
flag = 1
if __name__ == '__main__':
prime(99, 1001)
print()
三星答案:
**** Hidden Message *****
基础语法:
https://www.bilibili.com/video/BV1c4411e77t
算法讲解:
https://www.bilibili.com/video/BV1HT4y1K7DY
本帖最后由 柿子饼同学 于 2022-8-22 17:58 编辑
线性筛表示不服{:10_307:}{:10_275:} prime = []
vis =
for i in range(2, 1001):
if not vis:
prime.append(i)
for j in range(len(prime)):
if prime * i > 1001:
break
vis * i] = True
if i % prime == 0:
break
for p in prime:
if p > 99:
print(p, end = ' ') 1
柿子饼同学 发表于 2022-8-22 17:53
线性筛表示不服
{:10_275:} 看看三星答案
页:
[1]