class ev { int c=0; long lcm(long d,int dd) { long div=d; for(int i=1;i<=dd;i++) // finds the smallest divisible number between 1 to 10 { if(div%i==0) { c=c+1; //counts the number of times the d variable gets divisible and sum them } } if(c==dd) // if sum comes out to be 10 then we know the d variable is completely divisible by every number from 1 to 10 { return div;// return the number } else { ++div; // increment the number c=0; // reset
Hi! What's your point?
sir i have attached a java file and i want to calculate the least number divisile by 1 to 20 each , I am able to calculate for 1 to10 but when i do it for 1 to 20 it gave me stackoverflow error
Perhaps it's related to the allowed memory for java. Try with the -Xms and -Xmx from the java command. If it doesn't change, then it's related to your program itself. I will have a look at your file as soon as I get my coffee break :)
You've decided to implement this algorithm recursively. That's fine, but if it takes more recursive calls to reach a number divisible by all numbers from 1 to 10 than there is allowed stack space on the JVM, you'll get a StackOverflow error. If your prints show that you pass a number divisible by all numbers from 1-10 and don't stop, then you logic for checking that is wrong. If, however, that doesn't happen, then you'll have to implement the algorithm iteratively (= with a loop) instead of recursively in order to reach the answer.
Find the primes that go into each of the numbers 1-20 and then look for overlap. Remove the overlap and multiply the remaining numbers out to get the final number.
Join our real-time social learning platform and learn together with your friends!