Ajuda com return de funções python

Por que esse meu código retorna “None”?

    numero=int(input("Digite um número inteiro:"))
    divisor=2
    primo=True
    def pr(numero,divisor,primo):
        while divisor<numero and primo:
            if numero%divisor==0:
                primo=False
            divisor=divisor+1
        if primo and numero!=1:
            return numero
        else:
            divisor=2
            primo=True
            numero=numero-1
            pr(numero,divisor,primo)
    print (pr(numero,divisor,primo))

E esse outro retorna “numero-1” em vez de retornar o valor atual de “numero”, que seria 97, um número primo ?

    numero=int(input("Digite um número inteiro:"))
    divisor=2
    primo=True
    def pr(numero,divisor,primo):
        while divisor<numero and primo:
            if numero%divisor==0:
                primo=False
            divisor=divisor+1
        if primo and numero!=1:
            return numero
        else:
            divisor=2
            primo=True
            numero=numero-1
            pr(numero,divisor,primo)
        return numero
    print (pr(numero,divisor,primo))

Esse não é o caminho que eu efetivamente estava pensando para resolver o problema, que é,
Um número é informado e ele devolve o maior primo, menor ou igual, ao numero informado, mas eu pensei em fazer dessa forma, e como estou começando agora a programar quero explorar e entender o máximo possível.