A Mersenne prime (M) is a prime number of the form M = 2^p - 1, where p is another prime number. Problem 525 asks the user to determine if a number is a Mersenne prime. In this problem, you are tasked with returning the number of primes numbers below the input number, n, that are Mersenne primes and the fraction of all primes below that input number that the Mersenne primes represent.
For example, for n = 100, there are 25 primes numbers: 2, 3, 5, 7, ..., 89, 97. As far as Mersenne primes go, there are only three that are less than 100: 2^2 - 1 = 3, 2^3 - 1 = 7, and 2^5 - 1 = 31. The corresponding fraction would be 3/25.
Hello Grant,
I don't know if it's a lot of work but it could be a good idea to add a Prime Numbers group 2 with more difficult problems. I think about beautiful Ned's problems (primes ladders, Longest prime diagonal, Twins in a window ...).
My logic is right but test cases are very hude numbers.... failed to evaluate...
You need to learn to avoid loops. You can use isprime on an array. In any case, your logic is wrong. You never test that b is prime.
As Guillaume pointed out, this solution doesn't test if the numbers in b are Mersenne primes, simply if they're less than 2^n-1, which is not the right criterion. Further, you concatenate the index of the loop (j, which goes from 1 to 1...), rather than a Mersenne prime to b.
Also, this problem is designed, as many of James's problems are, to fail by timeout unless vectorized solutions are used.
i have corrected the logic but plz can u tell me smthing about vectorized solutions...
u can also mail me on anupamagarw@gmail.com
http://nl.mathworks.com/help/matlab/matlab_prog/vectorization.html
some tips: http://nl.mathworks.com/help/matlab/matlab_prog/techniques-for-improving-performance.html