求冪

s故事說給風聽1127發表於2018-04-27

【從左至右】

#include <stdio.h>
#define N 100
double left(int p[],int i,int a)//冪從左至右 
{
	double t=1;
	for(;i>=0;i--)
	{
		if(p[i]==1)
			t=t*t*a;
		else
			t=t*t;
	}
	return t;
}
int main()
{
	int p[N],i=0,a,n;
	double sum;
	printf("本程式計算a^n,請輸入a,n:\n");
	scanf("%d%d",&a,&n);
	while(n)
	{
		p[i++]=n%2;
		n/=2;
	}
	i--;
	sum=left(p,i,a);
	printf("%.0lf\n",sum);
}

【從右至左】

#include <stdio.h>
double right(int a,int n)//從右至左計算a^n 
{
	double t;
	t=1;//確定sum的初值 
	while(n)
	{
		if(n%2==1)
			t*=a;
		a*=a;
		n/=2; 
	}
	return t;
}
int main()
{
	int a,n;
	double sum;
	printf("本程式計算a^n,請輸入a,n:\n");
	scanf("%d%d",&a,&n);
	sum=right(a,n);
	printf("%.0lf\n",sum);
} 

相關文章