按 3、5、7 的固定顺序收集可整除的数,再用空格连接输出。
OJ: noi_openjudge
题目 ID: ch0104-09
难度:入门
标签:数学条件判断python
日期: 2026-07-30 23:01
题意
依次输出能整除输入数的 3、5、7;若一个也没有,输出 n。
思路
按题目要求的顺序遍历 (3, 5, 7),列表推导式只保留能整除的数。结果非空时 " ".join(...) 自动控制空格;空列表时输出 n。
代码
Python代码
python
number = int(input())
divisors = [divisor for divisor in (3, 5, 7) if number % divisor == 0]
print(" ".join(map(str, divisors)) if divisors else "n")C++代码
cpp
#include <cstdio>
int main(){
int n;
scanf("%d",&n);
if( n % 3 ==0 && n % 5 == 0 && n % 7 ==0){
printf("3 5 7");
}
else if(n % 3 ==0 && n % 5 == 0){
printf("3 5");
}
else if(n % 3 ==0 && n % 7 == 0){
printf("3 7");
}
else if(n % 5 ==0 && n % 7 == 0){
printf("5 7");
}
else if ( n % 3 == 0)
printf("3");
else if ( n % 5 == 0)
printf("5");
else if ( n % 7 == 0)
printf("7");
else {
printf("n");
}
return 0;
}复杂度
只检查三个除数,时间复杂度和额外空间复杂度均为
总结
当多个条件的输出规则一致时,先收集结果再统一格式化,比枚举所有组合更容易维护。