C 語言中如何盡量簡單地用 while 語句求 1 到 10 的階乘?

時間 2021-05-06 11:07:04

1樓:

如果你的模數不是質數的話,請先拆成質數的整次冪。

然後對於每乙個整次冪,用 exLucas 裡面提到的遞推方法解出在這一整次冪下的階乘結果。

隨後只需要用 CRT 合併即可。

由於題主沒有貼出模數,所以我沒法寫出更詳細的過程。

2樓:靜水流深MXY

#include

intmain()

return0;}

3樓:墨黎

while(n<=10)

{a=a*n;

cout<

4樓:螞蟻的進軍

# include

int main()

int i = 1, j = 10;

while (j > 0)

i = i * j;

j--;

printf("%d\n", i);

5樓:草薙直哉

#include

intfactorial

(inti)

dowhile(l

l=0;

k=0;

m++;}

returnj;

}int

main

(void

)return0;

}好久沒寫C了,不知這個複雜度n!的方法什麼水平?

更新:用了下遞迴,雖然沒到 但是成功優化了不少更新:優化了乙個細節,成功優化到了 基礎沒學好不知道這個複雜度是不是這麼寫的- -

算了下算10的階乘大概需要八千萬億年…………

6樓:zighouse

#include

static int tab=;

int main(void){

int *p=tab;

while(*p)printf("%d\n", *p++);

return 0;

7樓:lalala125

int main()

printf("%d", sum);}

8樓:浩仔

int fac(int x)//x代表幾的階乘{if(x=1)

return 1;

int y;

y=x*fac(x-1);

return y;

不知道對不對。

9樓:祈緒晨晨

// 初心者版本

intresult=1

;// 儲存結果

inti=1

;// 計數器

while(i

<=10)

// 一般操作

intresult=1

;// 儲存結果

inti=11

;// 計數器

while(0

<--i)

// 嵌入式狂魔

uint32_t

mem=

0xa0000001

;// 前 4 位為計數器後 28 位為結果while

(mem

&0xf0000000)

10樓:物理極客銘

#include

#include

int mian()

11樓:

#include

intmain

(void

)(手動狗頭

12樓:歐陽寒楓

#include

using namespace std;

int ans=1;

int n=10;

int main()

While(n<=10 && n >=1)ans*=n;

ncout

13樓:CWKSC

盡量簡單一點 ?

不聽不聽,我要用 Gamma 函式。()

#include

#include

#include

double

Integral

(doublef(

double

,double

),doublez,

double

lower

,double

upper

,double

step

=0.001

)return

sum;

}#define gammaUpperLimit 100double

gammaFx

(doublet,

doublez)

double

Gamma

(doublez)

double

Factorial

(doublen)

intmain

(void

)printf

("1! = %lf\n"

,Factorial(1

));printf

("2! = %lf\n"

,Factorial(2

));printf

("3! = %lf\n"

,Factorial(3

));printf

("4! = %lf\n"

,Factorial(4

));printf

("5! = %lf\n"

,Factorial(5

));printf

("6! = %lf\n"

,Factorial(6

));printf

("7! = %lf\n"

,Factorial(7

));printf

("8! = %lf\n"

,Factorial(8

));printf

("9! = %lf\n"

,Factorial(9

));printf

("10! = %lf\n"

,Factorial(10

));system

("pause"

);return0;

}double

gammaFx

(doublet,

doublez)

double

Gamma

(doublez)

double

Factorial

(doublen)

還有#include

#include

#include

double

StirlingFormula

(doublen)

intmain

()system

("pause"

);return0;

}用於取 n 階乘近似值的數學公式,在 n 很大時十分好用。

#include

#include

#include

double

StirlingFormula

(doublen)

intmain

()system

("pause"

);return0;

}話說在我回答之前已經有十多個回答,題主應該已經獲得了他的答案,所以就開始亂來了,沒有惡意。() 。順便給個正常答案吧 :

intans=1

;inti=

1;while(i

<=10)

// OR

for(

inti=1

,ans=1

;i<=10;

ans*=++i)

14樓:滄狼

int i = 11,num = 1;

while(--i) num *= i;

printf("%d",num);

這樣第一次*i的時候,i為10,當i乘到1以後,--i為0,退出while,其他東西自己補,我也不編譯執行了

15樓:「已登出」

哈哈,這個怎麼能少得了遞迴呢。

#include

intfact

(intn)

intmain()

16樓:

#include

int main()

{ long i=1,s=1;

while(i<=10s*=iprintf("%ld!=%ld\n",i,si

17樓:王一珉

好好學習

#include

int main()}

18樓:「已登出」

#include

int main()

19樓:

#include

intmain

(void)

20樓:

這種題為什麼不自己做??

#include

int main(){

int i=10;

int sum=1;

while(i){

sum*=i--;

printf("%d",sum);

return 0;

21樓:

#include

intmain

(void)

在C語言中,如何安全地使用void ?

Lvcs 靈活接收資料型別,可以試試使用巨集定義而不用函式 舉個例子 判斷兩個數哪個大 define MAX a,b a b a b 使用巨集定義可以靈活接收各種型別的 a b,而使用函式判斷的話就需要事先設定傳入引數的型別了。 劉燦 傳遞指標同時提供區域長度 不用0來標識字串或區域結束 以typd...

C 語言中如何優雅地拼接多段字串?

湛藍水晶 用sprintf strcat在設計之初是考慮了鏈式呼叫的,所以返回的是源位址,於是可以用 strcat strcat strcat strcat strcat strcat strcat strcat dest TEST1 ip TEST2 port TEST3 name TEST4 n...

C語言中字元陣列用 初始化?

Elias Wang 我們大致先把概念理清一下 字元陣列 初始化 在宣告變數的同時,為變數分配儲存空間,並初始化資料34 foo string literal 形式,初始化變數位址39 f o o 0 array 形式 賦值 變數已經被宣告,再對變數已有的儲存空間進行操作34 foo string ...