“同时被 3 和 5 整除”折叠成一次取余:3 与 5 互质,等价于 n % 15 == 0,命中输出 YES,否则 NO。
OJ: roj
题目 ID: 1046
难度:入门
标签:入门数学python
创建: 2026-09-29 16:10
更新: 2026-10-04 23:23
题目描述
输入一个整数 YES,否则输出 NO。
输入:一行一个整数
输出:一行 YES 或 NO。
样例输入:
text
15样例输出:
text
YES思路
3 与 5 互质,“同时被 3 和 5 整除"等价于"被 n % 15 == 0。注意条件是"同时",不能写成 ||;负数与
参考代码
Python 版:
python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 16:10
# update_at: 2026-10-04 12:47
import sys
BOTH = 15 # 3 与 5 的最小公倍数:被 3 整除且被 5 整除 ⇔ 被 15 整除
def solve() -> None:
data = iter(map(int, sys.stdin.buffer.read().split()))
n = next(data) # 待判定的整数,可能为负数或 0
# n 是 15 的倍数 ⇔ n % 3 == 0 且 n % 5 == 0;Python 负数取余结果仍非负,判定不受符号影响
divisible = n % BOTH == 0
print("YES" if divisible else "NO")
if __name__ == "__main__":
solve()C++ 版(同一算法):
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-10-04 23:23
* update_at: 2026-10-04 23:23
*/
// 判断整数 n 能否同时被 3 和 5 整除:3 与 5 互质,等价于判断 n 能否被 lcm(3,5)=15 整除。
#include <cstdio>
typedef long long ll;
ll n; // 待判定的整数,范围 (-1000000, 1000000),含负数与 0
int main() {
scanf("%lld", &n);
if (n % 15 == 0) printf("YES\n"); // 负数取余为 0 时同样表示整除,0 也是 15 的倍数
else printf("NO\n");
return 0;
}