質問内容
タイトルの通りにはなるのですが,半径が最大で1億(100000000)の円が内部に含む格子点の数から円周率を近似するときに半径が10000まではしっかり出来ているのですが100000になると-214294.212864207070000というようにあり得ない数値が出てしまいます.なぜこのような負の数が出てしまうのかということと,計算時間が短縮するための工夫を教えていただきたいです.よろしくお願いいたします.
コード
C
1#include<stdio.h> 2#include<math.h> 3double count(int m){ 4 long long check=0; 5 double answer; 6 for(int i=1;i<=m;i++){ 7 check+=(int)sqrt(m*m-i*i); 8 } 9 answer=((double)(check*4+m*4+1)/(double)(m*m)); 10 return answer; 11} 12int main(void){ 13 int n; 14 scanf("%d",&n); 15 printf("%d:%.15f\n",n,count(n)); 16 return 0; 17}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 13:56
2020/06/01 13:57
2020/06/01 13:58
2020/06/01 14:06
2020/06/01 14:08
2020/06/01 14:09
2020/06/01 14:16