Problem B: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数
Time Limit: 1 Sec Memory Limit: 2 MB
Submit: 33429 Solved: 12787
[Submit][Status]Description
输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n<k<100,且m与n不相等。
Input
输入三个整数,依次为k、m、 n。
Output
从小到大输出符合题意的所有整数,两数之间用一个空格分开。
Sample Input
15 2 3
Sample Output
2 3 4 8 9 10 14 15
HINT
难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。
#include <stdio.h> int main() { int k,m,n; scanf("%d %d %d",&k,&m,&n); int t; if(m>n) { t=m; //使循环从mn中的最小值开始 m=n; n=t; } for(int i=m; i<k; i++) { if(i%m==0&&i%n==0)continue; else if(i%m==0||i%n==0 )printf("%d ",i); } if((k%m==0&&k%n!=0)||(k%m!=0&&k%n==0))printf("%d",k); //对特殊情况进行处理 return 0; }
注意学会使用continue
当符合条件时跳过一次循环