## Q.1

def N(x):
    '''calcule N(x) avec x un réel positif'''

    E = int(x) # partie entière de x (car x est positif)

    # les variables a et b représentent les coordonnées d'un vecteur u de C(x)
    # donc a<= ||u|| <= x < E+1
    # en fait, on peut même montrer que |a| <= E, et donc on pourrait transformer les range ci-dessous en range(-E,E+1)...

    compteur = 0
    for a in range(-E-1,E+2):
        for b in range(-E-1,E+2):
            NormU = (a**2+b**2)**(1/2)
            if NormU <= x:
                # u est dans C(x)
                compteur += 1

    return compteur

def Np(x):
    '''calcule Nplus(x) avec x un réel positif'''

    E = int(x)

    compteur = 0
    for a in range(E+2):
        for b in range(E+2):
            NormU = (a**2+b**2)**(1/2)
            if NormU <= x:
                # u est dans C(x)
                compteur += 1

    return compteur



## Q.2

import matplotlib.pyplot as plt

Lx = [ 0.1*k for k in range(100) ]
Ly = [ 4*Np(x)- N(x) -4*int(x) for x in Lx]

plt.plot(Lx,Ly)
plt.title("4*Nplus(x) - N(x) - 4*partie_entiere(x)")
plt.show()
# on vérifie que la constante en question est 3.

## Q.4

Lx = [ k for k in range(1,250) ]
Ly = [ N(x)/x**2 for x in Lx]

plt.plot(Lx,Ly)
plt.title("N(x)/x**2")
plt.show()

# il semble que l'on converge vers 3.14...






