判断能否被3,5,7整除

GitHub跳转原题关系图返回列表

按 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;
}

复杂度

只检查三个除数,时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

当多个条件的输出规则一致时,先收集结果再统一格式化,比枚举所有组合更容易维护。