2010年7月8日木曜日

標準のC言語で出来るだけ大きい数字のべき乗計算を行う方法

C言語に標準搭載されている機能だけで多くの桁数の計算が出来る様になります。 今回は unsigned long long int 型を使って見ました。

void bekijyo (int iBase,int iBeki){
unsigned long long int ulliAnswar, ulliOverf;
int iCounter;

/*カウンタと答えの初期値を初期化*/

ulliOverf = -1;
ulliOverf >>= 1;
ulliOverf /= iBase;

ulliAnswar = 1;
iCounter = 0;
do{
printf("%dの%d乗は%lluです\n",iBase, iCounter, ulliAnswar );

ulliAnswar *= iBase;

/*もし計算結果がオーバーフローしたらエラーを出し終了する*/
if(ulliAnswar >= ulliOverf){
printf("処理がオーバーフローしました。\n");

break;
}

++iCounter;

}
while(iCounter <= iBeki);
}

int main(){
int a,b;
printf("数値を入力してください:");
scanf ("%d",&a);
printf("何乗まで表示しますか:");
scanf ("%d",&b);
bekijyo(a,b);
return 0;

}
書かれている記事
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1443376994

0 件のコメント:

コメントを投稿