731 字
4 分钟
【洛谷】B2043

原文链接:https://www.luogu.com.cn/problem/B2043

本文许可:CC BY 4.0

【洛谷 B2043】判断能否被 3、5、7 整除#

致敬传奇屎山王 👑#

[原题跳转] 以下是原题:

题目描述#

给定一个整数 xx,判断它能否被 33,55,77 整除,并输出以下信息:

1、能同时被 3,5,73,5,7 整除(直接输出 3 5 7,每个数中间一个空格);

2、只能被其中两个数整除(按从小到大的顺序输出两个数,例如:3 5 或者 3 7 或者 5 7,中间用空格分隔);

3、只能被其中一个数整除(输出这个除数);

4、不能被任何数整除,输出小写字符 n。

输入格式#

输入一行,包括一个整数 xx。

输出格式#

输出一行,按照描述要求给出整数被 33,55,77 整除的情况。

输入输出样例 #1#

输入 #1#

105

输出 #1#

3 5 7

说明/提示#

数据规模与约定#

对于全部的测试点,保证 1≤x≤2001 \leq x \leq 200。


题目一句话#

给定整数 x(1 ≤ x ≤ 200),输出它能被 3 5 7 中哪些数整除;
一个都整除不了就输出小写 n。


那么知道这个条件就很简单了,无非就是if判断语句嘛

number=int(input())
if number%3==0 and number%5==0 and number%7==0:
print('3','5','7')
elif number%3==0 and number%5==0:
print('3','5')
elif number%3==0 and number%7==0:
print('3','7')
elif number%5==0 and number%7==0:
print('5','7')
elif number%5==0 or number%3==0 or number%7==0:
print(number)
else:
print('n')
x = int(input()) # 读数
ok = [] # 空袋子,准备装能整除的除数
if x % 3 == 0:
ok.append(3) # 能被 3 整除,扔进袋子
if x % 5 == 0:
ok.append(5)
if x % 7 == 0:
ok.append(7)
# 按题目要求输出
if not ok: # 袋子还是空的 → 一个都整不了
print('n')
else: # 袋子有东西 → 空格拼起来
print(' '.join(map(str, ok)))

append小课堂#

其中的append的含义是给列表中添加元素 如:

shopping = ['鸡蛋', '牛奶']
shopping.append('面包')
print(shopping)

输出结果就为['鸡蛋', '牛奶', '面包']

无敌精简版#

x=int(input())
print(' '.join(str(d)for d in(3,5,7)if x%d==0)or'n')

没错,就是两行,震撼吧,看不懂计算过程?那我们把它拆开来看

  1. 生成器 (str(d) for d in (3,5,7) if x%d==0) 依次对 x 取模,只保留能整除的除数,并转成字符串。 结果是一个可迭代对象,里面元素可能是空、一个或最多三个字符串。
  2. ' '.join(...) 把上一步得到的字符串列表用空格拼成一个字符串。
  • 如果列表为空,join 得到空串 ”。
  • 空串在布尔上下文是 False,于是触发 or ‘n’,整个表达式变成 ‘n’。
  • 否则直接返回拼接好的串。 最后 print 把这个字符串输出即可。 一句话总结: 先过滤 → 再拼接 → 空就退成 ‘n’ → 打印。
print(*[d for d in(3,5,7)if int(input())%d==0]or['n'])
【洛谷】B2043
https://mikufans.yuzhiyuan.top/posts/洛谷b2043/
作者
遇缘
发布于
2025-11-15
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 323 天

部分内容可能已过时