输出所有质数

1 实验目的

  • 了解数字、布尔值、字符串、列表、元组、字典、集合等Python常用的变量类型。

  • 熟练掌握运算符、内置函数的用法。

  • 熟练掌握元素常用方法、切片和列表推导式。

2 实验内容

(一)输出所有质数

输入一个整数,输出小于该整数的所有质数(输出格式为{i:第i个质数,...},如{1: 2, 2: 3})。(二)01字符串

输入两个仅含'0'和'1'的字符串,依次输出两个字符串的所有非空子串的集合、它们所有公共的非空子串的集合以及它们所有非公共的非空子串的集合(集合按子串长度为主要关键词降序,子串表示的十进制为次要关键词升序输出)。

3 实验步骤

(一)输出所有质数

  • 步骤1 输入一个整数n。

  • 步骤2 遍历2到n-1的所有整数,找出其中所有只能被1及自身整除的整数。

  • 步骤3 通过字典输出这些整数。

print("".join(['*' * 66, '\n', '请输入'.center(66), '\n', '-' * 66, '\n',
           'ex1_1 输出所有质数'
          .center(66), '\n', '*' * 66]))
n = int(input('请输入一个整数:'))
ans = {}
for i in range(2, n):
    flag = 0
    for j in range(2, int(i ** 0.5) + 1):
        if i % j == 0:
            flag = 1
            break
    if flag == 0:
        ans.update({len(ans) + 1: i})
​
print(ans)

(二)01字符串

  • 步骤1 输入两个仅含'0'和'1'的字符串。

  • 步骤2 通过切片操作,分别得到两个字符串的所有非空子串的集合。

  • 步骤3 通过集合的交、并以及对称差运算,得到相应集合。

  • 步骤4 按照子串长度降序,子串表示的十进制数升序输出这三个集合。

print(''.join(['*' * 66, '\n', 'ZheLu 人 工 智 能 试 验 箱'.center(66), '\n', '-' * 66, '\n',
               'ex1_2 01字符串'
              .center(66), '\n', '*' * 66]))
​
str1 = input('请输入第一个仅含\'0\'和\'1\'的字符串:')
str2 = input('请输入第二个仅含\'0\'和\'1\'的字符串:')
set1 = set()
set2 = set()
​
k = len(str1)
set1.update(str1[i:j+1] for i in range(k) for j in range(i,k))
​
k = len(str2)
set2.update(str2[i:j+1] for i in range(k) for j in range(i,k))
​
print('所有非空子串的集合为:', sorted(set1 | set2, key=lambda x: (-len(x), int(x))))
print('所有公共的非空子串的集合为:', sorted(set1 & set2, key=lambda x: (-len(x), int(x))))
print('所有非公共的非空子串的集合为:', sorted(set1 ^ set2, key=lambda x: (-len(x), int(x))))

4 观察与思考

  • 可试着用列表推导式输出小于该整数的所有素数。

  • 了解通过筛选法寻找素数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值