######Exercice 1 ######
from math import*
##Question 1:##

def multiplesde7(n):
    l=[]
    for i in range(n):
        if i%7==0:
            l+=[i]
    return l


print(multiplesde7(100))


##Question 2##

Un nombre (n) est premier si aucun nombre inferieur a sqrt(n) en divise (n).
On vérifie ici ce théoreme en testant sucessivement la divisibilité des (i) par (n) avec (i) variant de 2 a sqrt(n)

##Question 3##

def isprime(n):
    s=int(sqrt(n))
    t=True
    i=2
    while i<=s and t==True:
        if n% i==0:
            t=False
        i+=1
    return(t)

def listepremier(n):
    l=[]
    for i in range(2,n+1):
        if isprime(i):
            l+=[i]
    return l

##Question 4##
def premier():
    p=[]
    n=2
    while len(p)!=100:
        if isprime(n):
            p+=[n]
        n+=1
    return p

##Question 5##

def jumeaux():
    l=[]
    for i in range(2,3000):
        if isprime(i) and isprime(i+2):
            l+=[(i,i+2)]
    return l

##Question 6#

n=0
while 1<2:
    a=2**(2**n) +1
    if isprime(a) == False:
        print(False, n)
        break
    n+=1
## Question 7 BONUS (à traiter plus tard) ##

######Exercice 2######

##Question 1##
a=1
print(a)
for i in range(100):
    b=(1/2)*(a+(2/a))
    print(b)
    a=b

##Question 2##
a=1
print(a)
for i in range(10):
    b=(1/2)*(a+(2/a))
    print((b)**2 - 2)
    a=b
# les valeurs tendent très rapidement vers 0 car sqrt(2)**2 - 2 = 0

##Question 3#
a=1
l=[1]
for i in range(10):
    b=(1/2)*(a+(2/a))
    l+=[b**2-2]
    a=b
i=0
while 1<2:
    if l[i]<0.00002
        print(i)
        break
    i+=1
# On cherche a encadrer |Un**2 -2|
#Sachant que la condition d'arrêt de départ est :
#|Un-sqrt(2)|<10**-5
#Or x->sqrt(x) est 1/2 lispsiptienne => |f(y)-f(x)|<1/2 |x-y| On pose x=Un**2 et y=2=(sqrt(2))**2
#Ainsi, on a |Un -sqrt(2)|<1/2|Un**2-2|
#Or on souhaite avoir |Un -sqrt(2)|<10**-5. Une proposition plus forte consiste à dire:
#    |Un-sqrt(2)|<1/2|Un**2-2|<10**-5
#<=> 2*|Un-sqrt(2)|<|Un**2-2|<2*10**-5
#D'ou la condition d'arrêt : |Un**2-2|<2*10**-5



