I would like not to use the function pow()
but instead write a very simple one
is there a simple formula i can use?Code:long power2 (long n); { // Returns 2 raised to the power of n. }
thank you
This is a discussion on Power within the C++ Programming forums, part of the General Programming Boards category; I would like not to use the function pow() but instead write a very simple one Code: long power2 (long ...
I would like not to use the function pow()
but instead write a very simple one
is there a simple formula i can use?Code:long power2 (long n); { // Returns 2 raised to the power of n. }
thank you
Raising a number to a power is just repeated multiplication.
(If you want 2^n, you can do even better because of the internal binary representation of the number -- multiplying by 2 in binary is just like multiplying by 10 in decimal: you just move things over.)
If your comment is accurate then in this case it really is very simple:
However, if what you want is to implement your own version of pow(), then recall that pow() takes two arguments, not just one, and for good reason.Code:// Returns 2 raised to the power of n. long power2(long n) { return 1L << n; }
EDIT:
Then again, since your power2() function deals with long rather than unsigned long, it might make sense to define power2() for negative valued arguments as returning 0. A simple if statement would suffice.
Last edited by laserlight; 01-23-2009 at 02:13 PM.
C + C++ Compiler: MinGW port of GCC
Version Control System: Bazaar
Look up a C++ Reference and learn How To Ask Questions The Smart Way
what i want to do is send in a prime number
and make it a mersenne prime.
using 2^n -1
not sure how i can do that without using pow()
Ah, then a left shift as tabstop hinted and I demonstrated would indeed be correct. Since n would be positive, you would not have to account for negative numbers either.
C + C++ Compiler: MinGW port of GCC
Version Control System: Bazaar
Look up a C++ Reference and learn How To Ask Questions The Smart Way
Read the tutorial on bitwise operations. The expression that you are looking for is (1L << n) - 1. Note that you have a pretty limited set of prime number inputs since this would quickly overflow even an unsigned long long.Originally Posted by mrsirpoopsalot
C + C++ Compiler: MinGW port of GCC
Version Control System: Bazaar
Look up a C++ Reference and learn How To Ask Questions The Smart Way
I was going to test from 2 to a million numbers and if a prime number then send that prime number to the power2 function. I will work on it this weekend!
ok, i will read the tutorial thank you and i will use this expression
(1L << n) - 1
My homepage
Advice: Take only as directed - If symptoms persist, please see your debugger
Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"