#

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]}")