dodanie obliczania liczb pi
This commit is contained in:
1
obliczanie_pi/python/.gitignore
vendored
Normal file
1
obliczanie_pi/python/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
venv/
|
||||
45
obliczanie_pi/python/main.py
Normal file
45
obliczanie_pi/python/main.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from flask import Flask, jsonify, request
|
||||
import time
|
||||
from flask_cors import CORS
|
||||
from decimal import Decimal, getcontext
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
def calculate_pi(n):
|
||||
getcontext().prec = n * 14
|
||||
pi = Decimal(0)
|
||||
k = Decimal(0)
|
||||
x = Decimal(1)
|
||||
sixteen = Decimal(16)
|
||||
|
||||
for i in range(n):
|
||||
pi += (Decimal(4) / (8*k + 1) -
|
||||
Decimal(2) / (8*k + 4) -
|
||||
Decimal(1) / (8*k + 5) -
|
||||
Decimal(1) / (8*k + 6)) * x
|
||||
k += 1
|
||||
x /= 16
|
||||
|
||||
return pi
|
||||
|
||||
@app.route('/pi')
|
||||
def get_pi():
|
||||
try:
|
||||
precision = int(request.args.get('precision', 10))
|
||||
|
||||
start_time = time.time()
|
||||
pi = calculate_pi(precision)
|
||||
duration = (time.time() - start_time)*1000
|
||||
|
||||
return jsonify({
|
||||
'pi': f"{pi:.{precision}f}",
|
||||
'time': f"{duration:.6f}ms",
|
||||
'language': 'Python'
|
||||
})
|
||||
except ValueError:
|
||||
return jsonify({'error': 'Invalid precision parameter'}), 400
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Python server starting on port 8082...")
|
||||
app.run(port=8082)
|
||||
Reference in New Issue
Block a user