回覆列表
-
1 # Inpetents
-
2 # 來自網路的程式碼
//用折半演算法的思想
#include <stdio.h>
int pow_a(int*,int);
int main(void)
{
int a,n;
scanf("%d %d",&a,&n);
n = pow_a(&a,n);
printf("最小次數是%d\n,值 = %d\n",n,a);
return 0;
}
int pow_a(int *x,int n)
{
int y = *x * *x; //y是x的平方
int tmp = n; //測試值
int count = 1; //次數
int model = 0; //判斷奇偶性
if (tmp % 2 != 0)
{
model = 1;//奇數
}
while(tmp / 2 != 1)
{
y *= y;
n /= 2;
tmp = n;
++count; //遞增次數
}
if(model)
{
y *= *x;
++count;//當是奇數的時候在遞增一次
}
*x = y;
return count;
}
/*
計算a的n次方
*/
#include<stdio.h>
#include<math.h>
void main()
{
int a,n,y;
scanf("%d %d",&a,&n);
y=pow(a,n);
printf("%d",y);
}