不二如是 发表于 2022-8-22 17:38:09

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:53:13

本帖最后由 柿子饼同学 于 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 = ' ')

kongminghui 发表于 2022-8-23 10:45:08

1

不二如是 发表于 2022-8-23 16:30:53

柿子饼同学 发表于 2022-8-22 17:53
线性筛表示不服

{:10_275:}

奇恒之腑 发表于 2022-12-4 16:54:09

看看三星答案
页: [1]
查看完整版本: 0006-编程打卡:判断99~1001间有多少素数并打印