3

Write a program that computes the following equation. 100/1+99/2+98/3+97/4+96/5...3/98+2/99+1/100

I am not asking for a solution. Yes this is a homework problem, but I am not here to copy paste the answers. I asked my professor to explain the problem or how should I approach this problem? She said "I can't tell you anything."

public static void main(String[] args){
    int i;

    for(i = 100; i >= 1; i--)
    {
        int result = i/j;
        j = j+1;
        System.out.println(result);
    }
}
Sebas
  • 21,192
  • 9
  • 55
  • 109
happy face
  • 43
  • 9

4 Answers4

5

You can try to observe a "trend" or "pattern" when solving questions of this type.

Given: 100/1+99/2+98/3+97/4+96/5...3/98+2/99+1/100

We derived: Numerator/Denominator, let's call it n divide by d (n/d)

Pattern Observed:

  • n - 1 after every loop
  • d + 1 after every loop

So, if you have 100 numbers, you need to loop 100 times. Thus using a for-loop which loops 100 times will seemed appropriate:

for(int n=0; n<100; n++) //A loop which loops 100 times from 0 - 100

To let n start with 100, we change the loop a little to let n start from 100 instead of 0:

for(int n=100; n>0; n--) //A loop which loops 100 times from 100 - 0

You settled n, now d needs to start from 1.

int d = 1; //declare outside the loop

Putting everything together, you get:

int d = 1;
double result = 0.0;
for (int n=100; n>0; x--)
{
    result += (double)n/d; //Cast either n or d to double, to prevent loss of precision
    d ++; //add 1 to d after every loop
}
user3437460
  • 17,253
  • 15
  • 58
  • 106
2

You are on the right track. You need to loop like you've done, but then you need to SUM up all the results. In your example you can try:

result = result + i/j;

or

result += i/j;

Note that the declaration of result needs to be outside the loop otherwise you are always initializing it.
Also think about the division (hint), you are dividing integers...

Alvin Bunk
  • 7,621
  • 3
  • 29
  • 45
0

if you want the result in the same format then do :

int j = 100;
double sum=0;
for (int i = 1; i <= 100; i++) {
sum += ((double) j / i);   // typecast as least one of i or j to double.
        System.out.print(j + "/" + i+"+");
  j--;
}

 // here print the sum
Rustam
  • 6,485
  • 1
  • 25
  • 25
0

What you have is a series.

There is more than one way to define a series, but all things being the same it's more intuitive to have the index of a series increase rather than decrease.

In this case, you could use i from 0 to 99.

enter image description here

Which in java can be:

double sum = 0;
for (int i = 0; i < 100; i++) {
    sum += (100 - i) / (double) (1 + i);
}
Ed I
  • 7,008
  • 3
  • 41
  • 50