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