質問編集履歴
3
ご指摘いただいた点を変更したつもりです。プログラム以前に日本語の間違いなどもありましたら、教えていただけると助かります。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
ネイピア数eの小数点以下の桁数をできるだけ多く求めるには?
|
1
|
+
ネイピア数eの小数点以下の桁数をできるだけ多く求めるにはどうすればよいですか?
|
body
CHANGED
@@ -27,11 +27,14 @@
|
|
27
27
|
```### 前提・実現したいこと
|
28
28
|
初投稿です。プログラミングを一ヶ月ほどになります。
|
29
29
|
C言語において、ネイピア数eの小数点以下の桁数をできるだけ多く求めて表示する関数を作ろうと考えています。
|
30
|
+
追記:
|
31
|
+
桁数をできるだけ多くとは、double以上の精度かつ、小数点以下の桁数が例えば500桁まで求めるこができることを指します。
|
30
32
|
以下にソースコードの一部を載せておきます。
|
31
33
|
### 発生している問題・エラーメッセージ
|
32
34
|
|
33
35
|
```
|
36
|
+
1/n!のn!が配列で表現されているとき、1/n!をどのようにして計算するかを教えていただきたいです。具体的にはn! = A[3]A[2]A[1]であるとき、1/n! = 1 / A[3]A[2]A[1] の計算の仕方を知りたいです。例えば、これを近似する式が存在していたり、式をうまく分割することができたりするといった感じに。(このままでは桁数が多くなると計算ができなくなってしまうので)
|
34
|
-
|
37
|
+
n!が配列で表現されているとは、n!が配列A[N]で表されるとき、n!=A[N-1]A[N-2]・・・A[0]となっていることを指します。
|
35
38
|
```
|
36
39
|
|
37
40
|
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,19 +9,20 @@
|
|
9
9
|
g = 1;
|
10
10
|
carry = 0;
|
11
11
|
|
12
|
-
|
12
|
+
for(k = 2; k <= t; k++){
|
13
|
-
|
13
|
+
for(i = 0; i < L; i++){
|
14
|
-
|
14
|
+
copy[i] = ans[i];
|
15
|
-
}
|
16
|
-
for(n = 1; n <= g+1; n++){
|
17
|
-
ans[n] = ans[n]*k + carry;
|
18
|
-
carry = ans[n]/10;
|
19
|
-
if(carry != 0){
|
20
|
-
ans[n] = ans[n]%10;
|
21
|
-
if((n+1) > g)
|
22
|
-
g = n+1;
|
23
15
|
}
|
16
|
+
for(n = 1; n <= g+1; n++){
|
17
|
+
ans[n] = ans[n]*k + carry;
|
18
|
+
carry = ans[n]/10;
|
19
|
+
if(carry != 0){
|
20
|
+
ans[n] = ans[n]%10;
|
21
|
+
if((n+1) > g)
|
22
|
+
g = n+1;
|
24
23
|
}
|
24
|
+
}
|
25
|
+
}
|
25
26
|
}
|
26
27
|
```### 前提・実現したいこと
|
27
28
|
初投稿です。プログラミングを一ヶ月ほどになります。
|
1
ソースコードを貼り直しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,14 +1,5 @@
|
|
1
|
-
### 前提・実現したいこと
|
2
|
-
初投稿です。プログラミングを一ヶ月ほどになります。
|
3
|
-
C言語において、ネイピア数eの小数点以下の桁数をできるだけ多く求めて表示する関数を作ろうと考えています。
|
4
|
-
以下にソースコードの一部を載せておきます。
|
5
|
-
### 発生している問題・エラーメッセージ
|
6
|
-
|
7
|
-
```
|
1
|
+
```C
|
8
|
-
1/n!のn!が配列で表現されているとき、1/n!をどのようにして計算するか
|
9
|
-
|
2
|
+
コード
|
10
|
-
|
11
|
-
### 該当のソースコード
|
12
3
|
void kaizyou(int *x){ //階乗したい数 x! Lはマクロで宣言済み
|
13
4
|
int ans[L] = {0};
|
14
5
|
int copy[L] = {0};
|
@@ -20,22 +11,29 @@
|
|
20
11
|
|
21
12
|
for(k = 2; k <= t; k++){
|
22
13
|
for(i = 0; i < L; i++){
|
23
|
-
|
14
|
+
copy[i] = ans[i];
|
24
15
|
}
|
25
16
|
for(n = 1; n <= g+1; n++){
|
26
|
-
|
17
|
+
ans[n] = ans[n]*k + carry;
|
27
|
-
|
18
|
+
carry = ans[n]/10;
|
28
|
-
|
19
|
+
if(carry != 0){
|
29
|
-
|
20
|
+
ans[n] = ans[n]%10;
|
30
|
-
|
21
|
+
if((n+1) > g)
|
31
|
-
|
22
|
+
g = n+1;
|
32
|
-
}
|
33
23
|
}
|
34
|
-
|
24
|
+
}
|
25
|
+
}
|
35
|
-
```
|
26
|
+
```### 前提・実現したいこと
|
27
|
+
初投稿です。プログラミングを一ヶ月ほどになります。
|
28
|
+
C言語において、ネイピア数eの小数点以下の桁数をできるだけ多く求めて表示する関数を作ろうと考えています。
|
36
|
-
ソースコード
|
29
|
+
以下にソースコードの一部を載せておきます。
|
30
|
+
### 発生している問題・エラーメッセージ
|
37
31
|
|
32
|
+
```
|
33
|
+
1/n!のn!が配列で表現されているとき、1/n!をどのようにして計算するかを教えていただきたいです。
|
34
|
+
```
|
38
35
|
|
36
|
+
|
39
37
|
### 試したこと
|
40
38
|
|
41
39
|
再帰関数を利用した階乗を計算するものだと、限界があるため、配列を用いて階乗を求めました。
|