Print prime numbers in a range with Python
#!/usr/bin/env python3 import sys m = int(sys.argv[1]) n = int(sys.argv[2]) primes = [i for i in range(m,n) if all(i%j !=0 for j in range(2,int(i**0.5) + 1))] print(primes)
Solve quadratic equations with impunity using Python (and complex numbers)
#!/usr/bin/env python3
import math,sys
a,b,c=map(float,sys.argv[1:])
d=b*b-4*a*c
if d>=0:x1=(-b+math.sqrt(d))/(2*a);x2=(-b-math.sqrt(d))/(2*a)
else:r=-b/(2*a);i=math.sqrt(-d)/(2*a);x1,x2=complex(r,i),complex(r,-i)
print("The function has","two real roots: {} and {}".format(x1,x2)if d>0 else
"one double root: {}".format(x1)if d==0 else
"two complex roots: {} and {}".format(x1,x2))
Python for all your linear algebra homework:
#!/usr/bin/env python3
import sys,ast,numpy as np
a=np.array(ast.literal_eval(sys.argv[1]))
print("Matrix:")
print(np.matrix(a))
print("\nTranspose:")
print(np.matrix(a.T))
print("\nTrace:",a.trace())
print("\nRank:",np.linalg.matrix_rank(a))
if a.shape[0]==a.shape[1]:
print("\nDeterminant:",round(np.linalg.det(a),6))
d,e=np.linalg.eig(a)
print("\nEigenvalues:",np.round(d,6))
print("\nEigenvectors:")
print(np.round(e,6))
print("\nPseudo-inverse:")
print(np.matrix(np.linalg.pinv(a)))
Factors
#! /usr/bin/python3 from sys import* from sympy.ntheory import factorint as f for i in range(int(argv[1]),int(argv[2])+1):print(i,f(i,multiple=1))
Egyptian fractions with Python
#!/usr/bin/env python3
import sys
from sympy import Rational
from sympy.ntheory.egyptian_fraction import egyptian_fraction
r=Rational(*map(int,sys.argv[1].split('/')))
e=egyptian_fraction(r)
print(r,"="," + ".join(f"1/{i}" for i in e))
Days between two dates with Python
#!/usr/bin/env python3
from datetime import date;import sys
m1,d1,y1=map(int,sys.argv[1].split('/'));m2,d2,y2=map(int,sys.argv[2].split('/'))
print((date(y2,m2,d2)-date(y1,m1,d1)).days)
Here’s a #bash script I saved as “pi” somewhere in $PATH
#!/bin/bash
echo "scale=$1;a(1)*4" | bc -l
I demonstrate it this way:
$ for i in {1..20}; do pi $i; done
2.8 3.12 3.140 3.1412 3.14156 3.141592 3.1415924 3.14159264 3.141592652 3.1415926532 3.14159265356 3.141592653588 3.1415926535896 3.14159265358976 3.141592653589792 3.1415926535897932 3.14159265358979320 3.141592653589793236 3.1415926535897932384 3.14159265358979323844
π calculation using a Machin-like arctangent formula
#!/usr/bin/python3
from decimal import Decimal, getcontext
import sys
digits = int(sys.argv[1]) if len(sys.argv) > 1 else 50
getcontext().prec = digits + 5 # a few extra digits to avoid rounding errors
def arctan(x):
"""Compute arctan(1/x) using the Taylor series."""
x = Decimal(x)
x2 = x * x
term = Decimal(1) / x
total = term
n = 1
sign = -1
while True:
term = term / x2
delta = term / (2 * n + 1)
if delta == 0:
break
total += sign * delta
sign *= -1
n += 1
return total
pi = 16 * arctan(5) - 4 * arctan(239)
pi = +pi # unary plus applies current context precision
print(f"Pi to {digits} digits:\n{str(pi)[:digits+2]}")





