Somma di due quadrati
Il contatore delle somme di due quadrati restituisce r₂(n), ossia il numero esatto di coppie ordinate di interi (x, y) che soddisfano x² + y² = n.
Esegui gratis nel browser
L’ordine e i segni contano: (1, 2), (2, 1), (-1, 2) e le altre varianti di segno sono quindi rappresentazioni distinte. Inserisca un intero non negativo entro il limite pubblicato per ottenere un conteggio deterministico ricavato dalla fattorizzazione in primi, senza enumerare ogni possibile coppia di coordinate. Il risultato è pronto per essere usato direttamente in calcoli e controlli automatizzati.
Cosa indica il conteggio delle rappresentazioni ordinate
Questo calcolatore risponde a una domanda precisa della teoria dei numeri: quante coppie di interi (x, y) soddisfano x² + y² = n? Il termine ordinate è fondamentale. Se x e y sono diversi, scambiarli produce un’altra rappresentazione. Anche i segni vengono contati separatamente quando una coordinata è diversa da zero. Di conseguenza, un punto geometrico in un quadrante può corrispondere a diversi punti con segno lungo una circonferenza, tutti inclusi nel conteggio. Sono compresi anche i punti sugli assi: un quadrato perfetto presenta rappresentazioni come (a, 0), (-a, 0), (0, a) e (0, -a). Il valore speciale n = 0 ha una sola rappresentazione, (0, 0). Il campo r_two adotta la notazione standard r₂(n). Restituisce un conteggio, non un elenco di coppie, e rimane quindi pratico anche quando n ammette molte rappresentazioni. L’input deve essere un intero non negativo. Numeri decimali, interi non sicuri, valori negativi e valori oltre il limite dichiarato vengono rifiutati senza arrotondamenti o interpretazioni implicite, mantenendo inequivocabile il significato matematico della risposta.
Come viene calcolato r₂(n)
L’algoritmo fattorizza n e applica il classico teorema sul conteggio delle somme di due quadrati. Per n positivo, r₂(n) è quattro volte la differenza tra il numero di divisori congruenti a 1 modulo 4 e il numero di quelli congruenti a 3 modulo 4. Una forma equivalente basata sui fattori è più rapida: se un primo congruente a 3 modulo 4 compare con esponente dispari, il conteggio è zero. Altrimenti si moltiplica uno più l’esponente di ogni fattore primo congruente a 1 modulo 4, quindi si moltiplica il prodotto per quattro. Le potenze di 2 non modificano il prodotto. Si consideri n = 65 = 5 × 13. Entrambi i primi sono 1 modulo 4 e hanno esponente uno, perciò r₂(65) = 4 × 2 × 2 = 16. L’implementazione esegue divisioni intere deterministiche e non esplora una griglia di coordinate, non contatta servizi remoti e non usa test probabilistici di primalità. Il massimo dichiarato limita il lavoro della fattorizzazione per tentativi e preserva l’esattezza degli interi accettati in entrambi i percorsi di esecuzione.
Come usare correttamente il risultato
Usi r_two quando serve il conteggio completo con segno e ordine adottato nelle formule aritmetiche, nei problemi sui punti reticolari e nei calcoli dei coefficienti delle serie theta. Non lo consideri il numero di scomposizioni essenzialmente diverse in due quadrati non negativi. Se interessano soltanto le combinazioni con 0 ≤ x ≤ y, occorre gestire separatamente la simmetria: una coppia con due coordinate distinte e non nulle produce otto rappresentazioni ordinate con segno; una coppia su un asse ne produce quattro; una coppia con coordinate uguali e non nulle ne produce quattro. Queste dimensioni delle orbite spiegano perché i valori positivi di r₂(n) sono normalmente multipli di quattro. Il caso zero è l’eccezione, poiché è valida soltanto l’origine. Quando non esiste alcuna rappresentazione, la capacità restituisce regolarmente zero, che non indica un errore di input. Per l’automazione, invii l’intero nel campo n e legga r_two nella risposta. Ogni richiesta API costa $0.002; la versione nel browser utilizza lo stesso calcolo puro. Conservi n insieme a r_two per poter ripetere verifiche future sugli stessi dati.
Casi d'uso
Verificare un esercizio di teoria dei numeri
Controlli il conteggio ordinato con segno ottenuto tramite fattorizzazione in primi o un ragionamento sui divisori.
Contare i punti reticolari su una circonferenza
Determini quanti punti a coordinate intere giacciono su x² + y² = n senza scandire una griglia quadrata.
Generare dati per successioni aritmetiche
Calcoli valori esatti di r₂(n) per interi scelti in esperimenti, test o coefficienti di serie theta.
Domande frequenti
(x, y) e (y, x) vengono contate separatamente?
Sì. Il risultato conta coppie ordinate, quindi lo scambio delle coordinate crea un’altra coppia, salvo quando x è uguale a y.
Le coordinate negative sono incluse?
Sì. Viene inclusa ogni coppia di interi con segno che soddisfa l’equazione.
Quanto vale r₂(0)?
Vale 1, perché (0, 0) è l’unica coppia ordinata di interi i cui quadrati sommano zero.
Perché il risultato può essere zero?
Un intero positivo non ha una rappresentazione con due quadrati se un primo congruente a 3 modulo 4 ha esponente dispari nella fattorizzazione.
Il calcolatore restituisce le coppie effettive?
No. Restituisce soltanto il conteggio esatto r_two, usando la fattorizzazione anziché enumerare le coordinate.
Quanto costa una richiesta API?
Ogni richiesta costa $0.002. Il calcolo è disponibile anche nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/numth/sum-two-squares-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":65}'const res = await fetch("https://api.kit.forhosting.com/numth/sum-two-squares-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 65
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/sum-two-squares-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 65
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/sum-two-squares-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":65}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":65}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/sum-two-squares-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"n": 65
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.sum_two_squares_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_n | 1000000000000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |