我如何使它更有效-考虑分数 n/d,其中 n 和 d 是正整数
How do I make this more efficient- Consider the fraction, n/d, where n and d are positive integers
如何提高效率
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
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8,
2/3, 5/7, 3/4, 4,5, 5/6, 6/7, 7/8
If can be seen that there are 21 elements in this set.
Write a
program to count the number of proper fractions for a given number d.
function GCD(a,b) {
while(a != b){
if(a > b)
a -= b;
else
b -= a;
}
return a;
}
function countProperFractions(d) {
count = 0;
num = [];
den = [];
for( j = 1; j <= d; j++){
for( n = 1; n < j; n++) {
num.push(n);
den.push(j);
}
}
for(i = 0; i < num.length; i++){
if(GCD(num[i],den[i])==1)
count+=1;
}
return count;
}
您可以使用 this 函数来获取与给定数 n 互质的正整数的个数。
某种前缀数组将帮助您更快地找到解决方案。
这是一个implementation.
如何提高效率
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
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4,5, 5/6, 6/7, 7/8
If can be seen that there are 21 elements in this set.
Write a program to count the number of proper fractions for a given number d.
function GCD(a,b) {
while(a != b){
if(a > b)
a -= b;
else
b -= a;
}
return a;
}
function countProperFractions(d) {
count = 0;
num = [];
den = [];
for( j = 1; j <= d; j++){
for( n = 1; n < j; n++) {
num.push(n);
den.push(j);
}
}
for(i = 0; i < num.length; i++){
if(GCD(num[i],den[i])==1)
count+=1;
}
return count;
}
您可以使用 this 函数来获取与给定数 n 互质的正整数的个数。
某种前缀数组将帮助您更快地找到解决方案。
这是一个implementation.