teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

ご指摘いただいた点を変更したつもりです。プログラム以前に日本語の間違いなどもありましたら、教えていただけると助かります。

2019/12/25 23:59

投稿

boxod-9116
boxod-9116

スコア4

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
- 1/n!のn!が配列で表現されているとき、1/n!をどのようにし計算す教えていただきたいです。
37
+ n!が配列で表現されているとは、n!が配列A[N]で表されるとき、n!=A[N-1]A[N-2]・・・A[0]となっこと指します。
35
38
  ```
36
39
 
37
40
 

2

2019/12/25 23:59

投稿

boxod-9116
boxod-9116

スコア4

title CHANGED
File without changes
body CHANGED
@@ -9,19 +9,20 @@
9
9
  g = 1;
10
10
  carry = 0;
11
11
 
12
- for(k = 2; k <= t; k++){
12
+ for(k = 2; k <= t; k++){
13
- for(i = 0; i < L; i++){
13
+ for(i = 0; i < L; i++){
14
- copy[i] = ans[i];
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

ソースコードを貼り直しました

2019/12/25 10:09

投稿

boxod-9116
boxod-9116

スコア4

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
- copy[i] = ans[i];
14
+ copy[i] = ans[i];
24
15
  }
25
16
  for(n = 1; n <= g+1; n++){
26
- ans[n] = ans[n]*k + carry;
17
+ ans[n] = ans[n]*k + carry;
27
- carry = ans[n]/10;
18
+ carry = ans[n]/10;
28
- if(carry != 0){
19
+ if(carry != 0){
29
- ans[n] = ans[n]%10;
20
+ ans[n] = ans[n]%10;
30
- if((n+1) > g)
21
+ if((n+1) > g)
31
- g = n+1;
22
+ g = n+1;
32
- }
33
23
  }
34
- }
24
+ }
25
+ }
35
- ```c言語
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
  再帰関数を利用した階乗を計算するものだと、限界があるため、配列を用いて階乗を求めました。