Description:
giving an integer N (2<=N<=20) and a real number M (0.5 < M<=1), output all proper fractions whose numerator is less than N ,and denominator is equal to or less than N, and value is equal to or less than M.
input: an integer N, a real number M in the type of double, in one line seperated by blank space.
output: proper fractions, each occupies a line. The proper fractions with smaller denominators are in the front. Between two different fractions with same denominator, the one whose numerator is smaller comes first. There is a ‘\n’ after the final fraction number.
Sample:
input:
6 0.7
output:
1/2
1/3
2/3
1/4
1/5
2/5
3/5
关键点!如何解决约分的分数。
用一个循环,同时和每一个i,j取模,如果他们的模同时为0,则认为他们是可约分的,则不能输出。
#include<stdio.h>
int main() {
int i, j;
int x;
int flag = 0;
int k = 0;
double threshold = 0;
scanf("%d%lf", &x, &threshold);
for (i = 1; i <= x; i++) {
for (j = 1; j < i; j++) {
flag = 0;
for (k = 2; k <= j; k++) {
if (j != 1) {
if ((j % k == 0) && (i % k == 0)) {
flag = 1;
break;
}
}
}
if (flag == 0 && 1.0 * j / i <= threshold) {
printf("%d/%d\n", j, i);
}
}
}
return 0;
}