Bailian2887 能被3,5,7整除的数入门

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian2887 能被3,5,7整除的数入门相关的知识,希望对你有一定的参考价值。

2887:能被3,5,7整除的数
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔)
3、能被其中一个数整除(输出这个除数)
4、不能被任何数整除;(输出小写字符’n’,不包括单引号)
输入
一个数字
输出
一行数字,从小到大排列,包含3,5,7中为该输入的除数的数字,数字中间用空格隔开
样例输入
0
5
15
105
样例输出
3 5 7
5
3 5
3 5 7
提示
因为有多组测试数据,程序通过下面方式读入n

int n;
while(cin>>n)
{
//你的代码
}

good luck:)

问题链接Bailian4098 第二大价值
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
解法一:各种整除组合输出
  根据各种整除组合输出结果,对于输出行末尾不能有空格是有效的。
解法二:逐一判定输出结果
  按顺序分别判定能否被3、5、7整除,并输出结果,输出行末尾带有空格。这是一种直接解法,代码比较简单。
解法三:通用编程
  将除数放入除数数组中,编写一个通用的解题程序。当题目要求的除数改变时,例如判定能否被5、7、11整除,只需要改变除数数组初始值即可,不需要修改程序。
  采用通用编程,输出行末尾也输出空格。
程序说明:(略)
参考链接Bailian2887 能被3,5,7整除的数【入门】
题记:通用编程值得推荐。

AC的C语言程序(解法三:通用编程)如下:

/* Bailian2887 能被3,5,7整除的数 */

#include <stdio.h>

int fact[] = {3, 5, 7};

int main(void)
{
    int n, m, i;
    while (scanf("%d", &n) != EOF) {
        m = sizeof(fact) / sizeof(int);
        for (i = 0; i < m; i++)
            if(n % fact[i] == 0)
                printf("%d ", fact[i]);
        printf("\\n");
    }

    return 0;
}

AC的C语言程序(解法二:逐一判定输出结果)如下:

/* Bailian2887 能被3,5,7整除的数 */

#include <stdio.h>

int main(void)
{
    int n;
    while (scanf("%d", &n) != EOF) {
        if (n % 3 == 0) printf("3 ");
        if(n % 5 == 0) printf("5 ");
        if(n % 7 == 0) printf("7 ");
        printf("\\n");
    }

    return 0;
}

AC的C语言程序(解法一:各种整除组合输出)如下:

/* Bailian2887 能被3,5,7整除的数 */

#include <stdio.h>

int main(void)
{
    int n;

    while(scanf("%d", &n) != EOF) {
        if(n % 3 == 0 && n % 5 == 0 && n % 7 == 0)
            printf("3 5 7\\n");
        else if(n % 3 == 0 && n % 5 == 0)
            printf("3 5\\n");
        else if(n % 3 == 0 && n % 7 == 0)
            printf("3 7\\n");
        else if(n % 5 == 0 && n % 7 == 0)
            printf("5 7\\n");
        else if(n % 3 == 0)
            printf("3\\n");
        else if(n % 5 == 0)
            printf("5\\n");
        else if(n % 7 == 0)
            printf("7\\n");
        else
            printf("\\n");
    }

    return 0;
}

以上是关于Bailian2887 能被3,5,7整除的数入门的主要内容,如果未能解决你的问题,请参考以下文章

数论基础的补充解说

C语言编程输出1~1000内既能被3整除又能被7整除的数的和

Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)

求1到1000之间同时能被357整除的数

3-素数对中间的数能被6整除

180113 打印1-100既能被3整除又能被5整除的数