arithmetique.py

Created by 1epauletteshark

Created on December 06, 2023

2.09 KB


from math import floor,sqrt

def is_prime(a):
  if a<=1:
    return False
  if a==2:
    return True
  if a%2==0:
    return False
  max=floor(sqrt(a))
  for d in range(3,max+1,2):
      if a%d==0:
        return False
  return True

def prime_range(a,b):
  c=[]
  print("-"*43)
  for i in range(a,b):
    if is_prime(i):
      c.append(i)
  print(c)
  print("-"*43)

def factorise(a):
  factors=[]
  i=2
  while i*i<=a:
    if a%i==0:
      a//=i
      factors.append(i)
    else:
      i+=1
  if a>1:
    factors.append(a)
  return factors

def simplify(a,b):
  fa=factorise(a)
  fb=factorise(b)
  fc=[]
  print("-"*43)
  print("{} = {}".format(a,fa))
  print("{} = {}".format(b,fb))
  print("-"*43)
  cf=set(fa)&set(fb)
  for i in list(fa):
    if i in fb:
      fa.remove(i)
      fb.remove(i)
      fc.append(i)
  print("Facteurs commun: {}".format(fc))
  print("-"*43)
  ra=1
  rb=1
  for f in fa:
    ra*=f
  for f in fb:
    rb*=f
  print("Fraction simplifié:")
  print("{} / {} = {} / {}".format(a,b,ra,rb))
  print("-"*43)

def divisors(a):
  return [i for i in range(1,a+1) if a%i==0]

def euclidean(a,b):
  print("-"*43)
  print("{}={}*{}+{}".format(a,b,int(a//b),int(a%b)))
  print("-"*43)

def sync(a,b):
  print("-"*43)
  t=0
  while True:
    t+=min(a,b)
    if t%a==0 and t%b==0:
      print("{} = {} x {}".format(t,a,int(t/a)))
      print("{} = {} x {}".format(t,b,int(t/b)))
      print("-"*43)
      break

def gcd(a,b):
  fa=factorise(a)
  fb=factorise(b)
  fc=[]
  print("-"*43)
  print("{} = {}".format(a,fa))
  print("{} = {}".format(b,fb))
  print("-"*43)
  for i in list(fa):
    if i in fb:
      fa.remove(i)
      fb.remove(i)
      fc.append(i)
  print("Facteurs commun: {}".format(fc))
  print("-"*43)
  scf=1
  for i in fc:
    scf*=i
  print("{} = {} * {}".format(a,scf,int(a/scf)))
  print("{} = {} * {}".format(b,scf,int(b/scf)))
  print("-"*43)

print("-"*43)
print("Arithmetic 3eme")
print("-"*43)
print("is_prime(a)")
print("prime_range(a,b)")
print("factorise(a)")
print("gcd(a,b)")
print("simplify(a,b)")
print("divisors(a)")
print("euclidean(a,b)")
print("sync(a,b)")
print("-"*43)