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