Convert algorithm to a formula

AI Thread Summary
The discussion focuses on converting a given algorithm into a mathematical formula. The original function counts occurrences based on specific conditions involving integer divisions and comparisons. Key simplifications involve replacing the nested loop with a direct count and eliminating the floor function under certain conditions. The conversation suggests that the algorithm can be split into two cases based on upper limits for the variable i, leading to a more efficient representation. Ultimately, the goal is to express the algorithm as a sum in a formulaic form.
mryoussef2012
Messages
6
Reaction score
0
Hi
Please can someone help me convert this algorithm to a mathematical formula ?

function fun(int x)
{
int c = 0 ;
for(int i=2;i<floor(x/2);i++)
{
if(floor(x/i) > i-1)
for(int j=0;j<floor(x/i)-i+1;j++)
c++;
}

return c;
}

thanks
 
Physics news on Phys.org
Code:
for(int j=0;j<floor(x/i)-i+1;j++)
  c++;

This just counts how many times j<floor(x/i)-i+1.
In other words, you can replace it with
c+=floor(x/i)-i+1;

Next:
if(floor(x/i) > i-1)
As the left side cannot increase (with increasing i) and the right side always increases, this is true up to some specific i. Both sides are integers, so the statement is equivalent to
if(floor(x/i) >= i)
Written in that way, it is possible to drop floor() completely (check this!) as i is an integer:
if(x/i >= i)
which is just
if(i^2 <= x)

Simplified code:
Code:
function fun(int x)
{
  int c = 0 ;
  for(int i=2;i<floor(x/2);i++)
  {
    if(i^2 <= x)
      c+=floor(x/i)-i+1;
  }
  return c;
}

Now you have two upper limits for i, so it is reasonable to split that in two cases. Can you find them? The border is a specific integer.
It could be tricky (or even impossible) to find an explicit way to sum those floor(x/i), but it is certainly possible to write it as a sum in a formula.
 
Thanks mfb , that was great
 
I picked up this problem from the Schaum's series book titled "College Mathematics" by Ayres/Schmidt. It is a solved problem in the book. But what surprised me was that the solution to this problem was given in one line without any explanation. I could, therefore, not understand how the given one-line solution was reached. The one-line solution in the book says: The equation is ##x \cos{\omega} +y \sin{\omega} - 5 = 0##, ##\omega## being the parameter. From my side, the only thing I could...
Back
Top