Ho appena iniziato a imparare Python e ho iniziato a fare alcuni problemi solo per aiutare a costruire le mie abilità, tuttavia sono abbastanza bloccato su questa domanda.Elenco di numeri i cui quadrati sono la somma di due quadrati
Creare un elenco contenente tutti gli interi positivi fino a 1000 i cui quadrati possono essere espressi come somma di due quadrati, (i, e., Numeri interi p per cui p^2 = m^2 + n^2, dove m e n sono numeri interi maggiori di 0.)
Suggerimenti: ci sono diversi approcci. Potresti trovare utile avere un elenco di tutti i numeri quadrati. L'operatore in potrebbe essere utile.
Ecco il codice che mi è venuta in mente finora:
numbers=xrange(1001)
numbers_squared=[x**2 for x in numbers]
a=[]
for x in numbers_squared:
for b in numbers_squared:
if (x+b)**.5 <= 1001:
a.append(x+b)
print a
Il problema che ottengo con questo è che Python vogliono anni per fare questi calcoli (ho aspettato circa dieci minuti ed è ancora numeri di stampa). Qualsiasi suggerimento su come risolvere questo sarebbe molto apprezzato.
p.s. Il punto principale è usare le liste. Anche i suggerimenti sarebbero più apprezzati della soluzione stessa.
Grazie!
Bene, per esempio, è possibile limitare il secondo per il ciclo ai numeri sotto x. '8 ** 2 = 64' per esempio non può essere espresso come la somma di qualsiasi numero maggiore di' 64'. –
Ti è stato dato il numero di tali numeri? – inspectorG4dget
Ci stavo pensando, ma non ero sicuro di come scrivere esattamente in Python. Grazie per il suggerimento: D – Dizzle