IT

숫자를 거듭 제곱하는 C ++ 함수는 무엇입니까?

lottoking 2020. 7. 30. 09:36
반응형

숫자를 거듭 제곱하는 C ++ 함수는 무엇입니까?


숫자를 거듭 제곱해야합니까?

2^1

2^2

2^3

기타 ...


cmath 라이브러리의 pow () 자세한 내용은 여기를 참조하십시오 . #include<cmath>파일 맨 위에 놓는 것을 잊지 않고 .


std::pow에서 <cmath>헤더가 있습니다.

pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);

이제는 할 수 없습니다

pow(2, N)

그것은 어떤의 모르기 때문에 N이있는 int 인으로 float, double또는 long double그것을 수행해야 버전, 당신은 모호성 오류가 발생합니다. 세 가지 모두 int에서 부동 소수점으로의 변환이 필요하며 세 가지 모두 똑같이 비용이 많이 많이!

따라서 첫 번째 인수를 입력하여 세 가지 중 하나와 완벽하게 일치해야합니다. 나는 보통double

pow(2.0, N)

어떤 변호사는 또 다시 허약 해 나는 종종이 함정에 빠졌지 만 경고 할 것입니다.


C ++에서 "^"연산자는 비트 단위 OR입니다. 권력을 높이는 데는 효과가 없습니다. x << n은 x에 2 n 횟수를 곱하는 것과 같으며 2를 거듭 제곱 할 때만 사용할 수있는 이진수의 요드 시프트. POW 함수는 일반적으로 작동하는 수학 함수입니다.


수학에서 일반적인 C 방법을 사용할 수 있습니다.

#include <cmath>

pow(2,3)

유닉스 계열 시스템이라면 man cmath

그게 당신이 설치할 것입니까?

수잘


pow (x, y) 함수를 사용 하십시오 : 여기를 참조하십시오

math.h 만 포함하면 모든 준비가 완료됩니다.


하지만 pow( base, exp )좋은 제안을 일반적으로 부동 소수점에서 작동하는지 유의하십시오.

이것은 원하는 것이거나 아닐 수도 있습니다. 일부 시스템에서는 누산기의 간단한 루프 곱셈이 정수 유형의 경우 더 빠 사용합니다.

그리고 특히 제곱의 경우 숫자를 부동 소수점 또는 정수로 곱할 수도 있습니다. 실제로 가독성의있는 (IMHO)가 실행 함수 호출의 성능 오버 헤드를 피할 수 있습니다.


의견을 말할만한 평판은 충분하지 않지만 QT 작업을 좋아하는 자체 버전이 있습니다.

    #include <QtCore/qmath.h>
    qPow(x, y); // returns x raised to the y power.

또는 QT를 사용하지 않는 경우 cmath는 기본적으로 동일합니다.

    #include <cmath>
    double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
    pow(x, y); //Should return this: 78125


#include <iostream>
#include <conio.h>

using namespace std;

double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)

void main()
{
    double x; //initializing the variable x and i 
    int i;
    cout<<"please enter the number"; 
    cin>>x;
    cout<<"plese enter the integer power that you want this number raised to";
    cin>>i;
    cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}

// raiseToPower 함수의 정의

double raiseToPow(double x, int power)
{
    double result;
    int i;
    result =1.0;
    for (i=1, i<=power;i++)
    {
        result = result*x;
    }
    return(result);
}

pow 또는 powf in <math.h>

Visual Basic 또는 Python과 같은 특수 접두사 연산자는 없습니다.


많은 답변이 제안 pow()되거나 유사한 대안 또는 자체 구현 을 제안 했습니다. 그러나 귀하의 질문에 대한 예 ( 2^1, 2^22^3)가 주어지면 2정수 거듭 제곱으로 만 올릴 필요가 있는지 추측합니다 . 이 경우을 사용 1 << n하는 것이 좋습니다 2^n.


pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

원래 질문 제목이 오해의 소지가 있습니다. 그냥 정사각형 으로하려면 2*2.


base_2다루려면 수학 라이브러리 대신 왼쪽 시프트 연산자 <<사용하는 것이 좋습니다 .

샘플 코드 :

int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}

샘플 출력 :

1   2   4   8   16  32  64  128  256  512  1024  2048  4096  8192  16384  32768

https://stackoverflow.com/a/2940800/319728에 표시되고 답변 된 것처럼 의 사용은 y 배 pow(x,y)보다 덜 효율적 입니다.x*x*x

따라서 효율성을 사용하려는 경우 x*x*x.


int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
    if (ow > 1)
    {
         i = i * power (i, ow - 1);
    }
    return i;
}

cout << power(6,7); //you can enter variables here

나는 라이브러리를 사용하고 cmath있거나 권한을 관리 math.h하는 pow()라이브러리 기능을 사용하기 위해

#include<iostream>
#include<cmath>

int main()
{
    double number,power, result;
    cout<<"\nEnter the number to raise to power: ";
    cin>>number;
    cout<<"\nEnter the power to raise to: ";
    cin>>power;

    result = pow(number,power);

    cout<<"\n"<< number <<"^"<< power<<" = "<< result;

    return 0;
}

먼저 추가 #include <cmath>한 다음 pow예를 들어 코드에서 methode를 사용할 수 있습니다 .

pow(3.5, 3);

이는 3.5염기3 이고 EXP

참고 URL : https://stackoverflow.com/questions/845912/what-is-the-c-function-to-raise-a-number-to-a-power

반응형