Numeros primos

Estou tentando resolver esse problema, mas não consigo fazer o modo 2, onde só posso usar if while e for.
Nesta tarefa será verificar se um número pode ser escrito como a soma de quadrados de quatro números primos consecutivos ou não. O programa terá dois modos de operação. No primeiro modo o programa receberá do usuário cinco números naturais n1, n2, n3, n4 e n e retornará a informação de se n pode ou não ser escrito como a soma dos quadrados de n1, n2, n3 e n4 . No segundo modo o programa receberá do usuário um único número natural n e retornará os quatro primos consecutivos cuja soma dos quadrados seja igual a n ou a informação de que não é possível representar n como a soma dos quadrados de quatro primos consecutivos.

@fernan
Eu não entendi muito bem o enunciado que você escreveu, mas acho que o código a seguir pode ajudar a ter uma noção do que fazer.

'''S = n³/3 + n²/2 + n/6'''
print('Escolha um modo de operação\n'
      + '1- Verificar se n pode ou não ser escrito como a soma dos quadrados dos números inseridos\n'
      + '2- Verifica e retorna os quatro números primos consecutivos cuja soma dos quadrados seja igual a n\n\n')
modo = int(input('Modo de operação => '))

def isprimo(numero):
    if numero != 0 & numero != 1:
        if numero > 3:
            for i in range(2, numero):
                if numero % i == 0:
                     return False
        return True
    return False

def getPrimos(lista):
    n = [lista[1], lista[2], lista[3]]
    primo = lista[3] + 1
    while(True):
        primo += 1
        if(isprimo(primo)): break
    list.insert(n, 4, primo)
    return n            

if(modo == 1):
    print('\nDigite cinco números naturais')
    n = []
    for i in range(0, 5):
        if i < 4:
            list.append(n, int(input(str.format('Número {} => ', i + 1))))
        else:
            list.append(n, int(input('Número que será verificado => ')))

    soma = n[0]**2+n[1]**2+n[2]**2+n[3]**2

    if(soma == n[4]):
        print(str.format('{} pode ser escrito com a sequência iformada', n[4]))
    else:
        print(str.format(
            '{} não pode ser escrito com a sequência informada', n[4]))
elif(modo == 2):
    '''(((n[3]**3)*2) + ((n[3]**2)*3) + n[3])/6'''
    valor = int(input('\nDigite um valor para verificação => '))
    soma = 0
    n = [3, 5, 7, 11]

    while(soma < valor):
        soma = (n[0]**2)+(n[1]**2)+(n[2]**2)+(n[3]**2)
        n = getPrimos([n[0], n[1], n[2], n[3]])
    if(soma == valor):
        print(str.format('\n{} pode ser escrito com a soma dos quadrados de {},{},{},{}', valor, n[0], n[1], n[2], n[3]))
    else:
        print(str.format('{} não pode ser escrito com nenhuma sequência de números primos', valor))
        print(str.format('Última sequência testada => {},{},{},{}', n[0], n[1], n[2], n[3]))
2 curtidas