Counting fractions in a range
Consider the fraction, n/d, where n and d are positive integers. If n < d and HCF(n,d)=1, it is called a reduced proper fraction.
If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get:
How many fractions lie between 1/3 and 1/2 in the sorted set of reduced proper fractions for d ≤ 12,000?
分数有范围计数
考虑形如n/d的分数,其中n和d均为正整数。如果n < d且其最大公约数为1,则该分数称为最简真分数。
如果我们将d ≤ 8的最简真分数构成的集合按大小升序列出,我们得到:
将d ≤ 12,000的最简真分数构成的集合排序后,在1/3和1/2之间有多少个分数?
//(Problem 73)Counting fractions in a range
// Completed on Wed, 19 Feb 2014, 16:34
// Language: C11
//
// 版权所有(C)wuyudong
// 博客地址:http://www.wuyudong.com
#include<stdio.h>
#define N 12000
int gcd(int a, int b) //求最大公约数函数
{
int r;
while(b) {
r = a % b;
a = b;
b = r;
}
return a;
}
void solve()
{
int a, b, i, j, ans;
ans = 0;
for(i = 5; i <= N; i++) {
a = i / 3; b = i / 2;
for(j = a + 1; j < b + 1; j++) {
if(gcd(i, j) == 1)
ans++;
}
}
printf("%d\n", ans);
}
int main()
{
solve();
return 0;
}
Answer:7295372
Completed on Thu, 20 Feb 2014, 00:34
Comments