A44155. 编程实现:打印出 1~1000 之间包含 3 的数字;如果 3 是连在一起的(如 233)则在数字前加上&;如果这个数字是质数则在数字后加上*,例:(3,13*,23*,&33,43*…&233*…)。输入:无输出:按照题意输出的数字,每行一个数字;样例输出:3 13* 23* &33 ……
填空题
困难
知识点
题目描述
编程实现:
打印出 1~1000 之间包含 3 的数字;
如果 3 是连在一起的(如 233)则在数字前加上&;
如果这个数字是质数则在数字后加上*,例:(3,13*,23*,&33,43*…&233*…)。
输入:
无
输出:
按照题意输出的数字,每行一个数字;
样例输出:
3
13*
23*
&33
……参考答案
def is_prime(n):
"""判断一个数是否为质数"""
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
# 检查从3到平方根的奇数
for i in range(3, int(n**0.5) + 1, 2):
if n % i == 0:
return False
return True
# 遍历1到1000的所有数字
for num in range(1, 1001):
num_str = str(num)
# 只处理包含'3'的数字
if '3' in num_str:
prefix = '&' if '33' in num_str else '' # 连续3的前缀
suffix = '*' if is_prime(num) else '' # 质数的后缀
# 拼接并打印结果
print(f"{prefix}{num_str}{suffix}")答案解析
评判标准:
10 分:完成打印 1~1000 之间包含 3 的数字
30 分:在 10 分标准的基础上,找出其中的连 3,前面加&
50 分:在 30 分标准的基础上,找出其中的质数,后面加*
上一题
下一题