用割圓術求圓周率π
圓周率π的遞推公式如下:
以半徑為1的圓開始,依次在圓內畫正六邊形、正十二邊形、正6n邊形...。
只有n趨近於無窮大,便可以得到足夠接近圓的正多邊形,計算的圓周率π也就越精確。
完整程式碼如下:
package cn.whut.num; import java.util.Scanner; public class pai { static void cyclotomic(int n) //割圓術演算法 { int i,s; double k,len; i=0; k=3.0; //初值 len=1.0; //邊長初值 s=6; //初始內接正6邊形 while(i<=n) { System.out.printf("第%2d次切割,為正%5d邊形,PI=%.24f\n",i,s,k*Math.sqrt(len)); s*=2; //邊數加倍 len=2-Math.sqrt(4-len); //內接多邊形的邊長 i++; k*=2.0; } } public static void main(String[] args) { int n; System.out.print("輸入切割次數:"); Scanner input=new Scanner(System.in); n=input.nextInt(); //輸入切割次數 cyclotomic(n); //計算每次切割的圓周率 } }
效果如下:
相關推薦
用割圓術求圓周率π
圓周率π的遞推公式如下: 以半徑為1的圓開始,依次在圓內畫正六邊形、正十二邊形、正6n邊形...。 只有n趨近於無窮大,便可以得到足夠接近圓的正多邊形,計算的圓周率π也就越精確。 完整程式碼如下: package cn.whut.num; impor
Java資料結構:割圓術求Π
利用割圓術,將一個圓分割成正多邊形,在利用多邊形邊長=圓周,求Π import java.util.*; public class 割圓術求Π { public static void main(String[] args) { int n; System.
用割圓術計算π
在中國古代,魏晉時期的數學家劉徽於公元263年就提出了“割圓術”的方法,來計算圓的周長,進而可以計算出圓周率。其實,割圓術的原理並不複雜,它通過圓內接正多邊形細割圓周,從而使正多邊形的周長無限接近圓周長,進而來求得較為精確的圓周率。割圓術從圓內接六邊形出發,每一次倍增多邊形的
Java 割圓術球π
使用割圓術求圓周率: package qiuΠ; import java.util.Scanner; public class geyuanshu { //n為切割次數 static voi
用python求圓周率π
今天網上搜索無限不迴圈小數的時候看到了關於π的計算方法,於是用python寫了一個求π的小程式。 原理:π的無窮級數展開: π=4*(1/1-1/3+1/5-1/7+1/9-1/11+……)=4*∑((-1)^n/(1+2n)),n∈N 下面附上程式碼: pi=0.0 fuhao=1
下列給定程序中函數fun的功能是:用下面的公式求π的近似值,直到最後一項的絕對值小於指定的數為止,π/4=1-1/3+1/5-1/7+...,例如,程序運行後,輸入0.0001,程序輸出3.1414
print fab stdio.h 運行 return printf main blog 程序 #include <math.h> #include <stdio.h> float fun ( float num ) { int s
兩圓相交求面積 hdu5120
-c ace pes eno script inpu common area time 轉載 兩圓相交分如下集中情況:相離、相切、相交、包含。 設兩圓圓心分別是O1和O2,半徑分別是r1和r2,設d為兩圓心距離。又因為兩圓有大有小,我們設較小的圓是O1。 相離相切的面積
圖 實驗七 采用Dijkstra算法求帶權有向圖的最短路徑
圖解 初始 -s 由於 mic spa 初始化 mil dijkstra Dijkstra算法圖解 說明:初始化:S = { 0 }, U = { 1, 2, 3, 4, 5, 6 }, dist[ ] = { 0, 4, 6, 6, ∞, &in
用for循環求1-100的所有數的和
1-1 else .com 列表 字符串 div 圖片 步長 一個 2、求1-100的所有數的和 x=0for y in range (1,101): x=x+yprint(x)#Python for循環中可以循環一個列表或者某一個字符串下面是for的基本格式,英文
c++作業實驗10第4章課後習題11遞歸(用遞歸方法求f())
ace 循環 中間變量 urn 裏的 調用 為什麽 區塊 不知道 // 實驗10第4章課後習題11遞歸.cpp: 定義控制臺應用程序的入口點。 #include "stdafx.h" using namespace std; #include<iostream>
HDU 1077 Catching Fish(用單位圓盡可能圍住多的點)
bits fine cau ron esc rds cas nts blank 傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=1077 Catching Fish Time Limit: 10000/5000 MS (Java/
[C++]用三種方法求最大子段和
規劃 amp pan 分治 一位 max 組成 所有 ret 問題描述:給定n個整數組成的序列,求其中子段和的最大值。當所有整數均為非負整數時定義其最大子段和為0 方法一:O(n2)用一個值存儲最大和,用枚舉所有和的方法,來與這個值比較並更新最大值。 1 int
怎樣用SQL遞迴求各個Folder的檔案數
-- 資料準備 CREATE TABLE [dbo].[ContentObject] (Id NCHAR(10), Name NVARCHAR(500),ParentId NCHAR(10),Type NVARCHAR(50)); INSERT INTO [dbo].[ContentObject]
蒙特卡洛法求圓周率100億資料
程式碼 import time import random hits=0 pi=0 DARTS=100000*100000 start=time.perf_counter() for i in range(DARTS): x,y=random.random(),random.
python實現斐波那契數列 用遞迴實現求第N個菲波那切數列
斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1 while b < 1000: print(b) a, b = b, a+b
用遞迴方法求n的階乘
程式碼: #include<iostream> using namespace std; int fact(int n); int main() { int n; loop: cin >> n; cout << fact(n);
用遞歸方法求n的階乘
sin n的階乘 cout pan out col ostream nbsp int 代碼: #include<iostream> using namespace std; int fact(int n); int main() { int n;
(割圓問題與費馬小定理)牛客多校8 G題
連結:https://www.nowcoder.com/acm/contest/146/G 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 131072K,其他語言262144K 64bit IO Format: %lld 題目描述 Niuni
C語言 用遞迴法求n的階乘
#include<stdio.h> int main() {int njc(int n); int x,n,y; scanf("%d",&n); y=njc(n); printf("%d",y); return 0; } int njc(int n
C++求圓周率
//計算圓周率的近似值精確到0.000001為止。運用pi/4=1-1/3+1/5-1/7+…… #include<iostream> #include<cmath> using namespace std; int main() {