?? 大數(shù)階乘算法.txt
字號(hào):
#include <stdio.h>
int main()
{
int n; //階乘大小
printf("請(qǐng)輸入n的大小:");
scanf("%d",&n); //從鍵盤接收階乘大小
int a[200]; //確保保存最終運(yùn)算結(jié)果的數(shù)組足夠大
int carry; //進(jìn)位
int digit = 1; //位數(shù)
a[0] = 1; //將結(jié)果先初始化為1
int temp; //階乘的任一元素與臨時(shí)結(jié)果的某位的乘積結(jié)果
for(int i = 2; i <= n; ++i) //開(kāi)始階乘,階乘元素從2開(kāi)始依次“登場(chǎng)”
{
//按最基本的乘法運(yùn)算思想來(lái)考慮,將臨時(shí)結(jié)果的每位與階乘元素相乘
for(int j = 1, carry = 0; j <= digit; ++j)
{
temp = a[j-1] * i + carry; //相應(yīng)階乘中的一項(xiàng)與當(dāng)前所得臨時(shí)結(jié)
//果的某位相乘(加上進(jìn)位)
a[j-1] = temp % 10; //更新臨時(shí)結(jié)果的位上信息
carry = temp / 10; //看是否有進(jìn)位
}
while(carry) //如果有進(jìn)位
{
a[++digit-1] = carry % 10; //新加一位,添加信息。位數(shù)增1
carry /= 10; //看還能不能進(jìn)位
}
}
printf("結(jié)果是:\n%d ! = ",n); //顯示結(jié)果
for(int i = digit; i >=1; --i)
{
printf("%d",a[i-1]);
}
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -