总时间限制:
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:)
问题分析:这是一个整除判定的问题。
程序说明:(略)
题记:需要在逻辑简洁易懂和计算速度快之间做个选择,还是选择逻辑简洁易懂。
AC的C语言程序如下:
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>
#define TRUE 1
#define FALSE 0
int main(void)
{
int n, f3, f5, f7;
while(scanf("%d", &n) != EOF) {
f3 = n % 3 == 0;
f5 = n % 5 == 0;
f7 = n % 7 == 0;
if(f3 && f5 && f7)
printf("3 5 7\n");
else if(f3 && f5)
printf("3 5\n");
else if(f3 && f7)
printf("3 7\n");
else if(f5 && f7)
printf("5 7\n");
else if(f3)
printf("3\n");
else if(f5)
printf("5\n");
else if(f7)
printf("7\n");
else
printf("n\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\n");
}
return 0;
}