Calcolatore del simbolo di Jacobi
Il simbolo di Jacobi (5/13) vale −1, il che indica che 5 non è un quadrato modulo 13. Inserisca un intero e un denominatore dispari positivo per ottenere −1, 0 o +1 tramite la reciprocità quadratica, senza fattorizzare prima il denominatore. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Primo testo
- 5
- N
- 13
- Valore Jacobi
- -1
- Simbolo
- -1
Il simbolo di Jacobi (a/n) estende il simbolo di Legendre dai moduli primi a qualsiasi intero positivo dispari n. Restituisce 0 quando a e n condividono un fattore comune maggiore di uno, e altrimenti +1 o −1 secondo il prodotto dei simboli di Legendre sui fattori primi di n — senza richiedere di fattorizzare n prima. Questo calcolatore implementa l’algoritmo classico di reciprocità quadratica: elimina le potenze di due dal numeratore, applica la legge supplementare di (2/n), scambia con il segno di reciprocità quando entrambi sono 3 mod 4 e riduce.
Cosa significa il simbolo di Jacobi (a/n)
Per un intero positivo dispari n e qualsiasi intero a, il simbolo di Jacobi (a/n) è definito in modo moltiplicativo a partire dal simbolo di Legendre. Quando n è un primo dispari p, Jacobi coincide con Legendre: (a/p) vale 0 se p divide a, +1 se a è un residuo quadratico non nullo modulo p, e −1 se a è un non residuo quadratico modulo p. Quando n si fattorizza come prodotto di primi dispari, (a/n) è il prodotto dei simboli di Legendre di a in quei primi (con molteplicità).
Di conseguenza (a/n) = 0 proprio quando gcd(a, n) è maggiore di uno; se il simbolo è −1 allora a non è un quadrato mod n; ma se il simbolo è +1, a può ancora non essere un quadrato quando n è composto — Jacobi è quindi una condizione necessaria di residualità quadratica, non sempre sufficiente.
Il valore è completamente moltiplicativo in entrambi gli argomenti (con le usuali cautele sul dominio di n), e le leggi di reciprocità quadratica offrono un modo efficiente per valutarlo: riduca a modulo n a un residuo non negativo, separi i fattori di due con (2/n) = (−1)^((n²−1)/8), e quando entrambe le parti dispari correnti sono 3 mod 4 inverta il segno a ogni scambio.
Quella procedura non fattorizza mai n e termina in un numero logaritmico di passi aritmetici, per questo i calcoli a mano e le implementazioni macchina condividono lo stesso algoritmo da manuale. I numeratori negativi sono ridotti al sistema di residui standard prima del ciclo, così (−1/n) segue automaticamente la legge supplementare (−1)^((n−1)/2).
Questa capacità rifiuta n pari e n minore di 1 perché il simbolo di Jacobi classico non è definito per quei denominatori; il simbolo di Kronecker estende la nozione ma è un altro strumento con un’altra intenzione di ricerca.
Limiti, prestazioni e dove si colloca
L’algoritmo di reciprocità esegue una quantità costante di aritmetica modulare per bit degli input, quindi il costo scala con la lunghezza in bit di n e non con una fattorizzazione per prova di n. I docenti lo usano per verificare calcoli manuali di (a/n) prima che gli studenti consegnino le dimostrazioni. Gli sviluppatori lo collegano a test di proprietà per impalcature in stile Solovay–Strassen, a risolutori di puzzle e CTF che necessitano di un carattere quadratico rapido, e a pipeline che non devono reimplementare la reciprocità in ogni linguaggio.
Casi d'uso
Controllare compiti e risposte di gara (a/n)
Studenti e coach possono verificare i calcoli del simbolo di Jacobi per reciprocità quadratica senza seguire a mano ogni cambio di segno né fidarsi di una calcolatrice che perde precisione intera.
Impalcare test di primalità e residualità
Script che necessitano di un passo Jacobi deterministico per demo Solovay–Strassen, controlli del criterio di Eulero o asserzioni di classi di residuo possono chiamare questo invece di spedire il proprio ciclo BigInt.
Domande frequenti
Cos’è il simbolo di Jacobi?
È una funzione a valori interi (a/n) per n positivo dispari che generalizza il simbolo di Legendre. Questo calcolatore restituisce −1, 0 o +1 come jacobi (e lo stesso valore come symbol).
(a/n)=1 significa che a è un quadrato mod n?
Non sempre. Se il simbolo è −1, a non è residuo quadratico mod n. Se è +1, a può ancora non essere un quadrato quando n è composto. Quando n è primo, Jacobi coincide con Legendre e +1 implica davvero un quadrato non nullo.
Come funziona il calcolatore del simbolo di Jacobi?
Usa la reciprocità quadratica su BigInt: riduce a mod n, elimina i fattori di 2 con la legge di (2/n), scambia con un cambio di segno quando entrambe le parti sono 3 mod 4, e termina quando la catena di resti arriva a 0.
Il calcolatore del simbolo di Jacobi è gratuito?
Lo strumento del browser è gratuito e gira in locale.
Quando il simbolo di Jacobi vale zero?
Vale zero quando a e n hanno un fattore comune maggiore di 1. Per esempio, (0/9) dà 0. In tutti gli altri casi il risultato è +1 oppure −1.
Strumenti correlati
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/jacobi-symbol \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"5","n":"13"}'const res = await fetch("https://api.kit.forhosting.com/numth/jacobi-symbol", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": "5",
"n": "13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/jacobi-symbol",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": "5",
"n": "13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/jacobi-symbol", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":"5","n":"13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":"5","n":"13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/jacobi-symbol", 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
{
"a": "5",
"n": "13"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.jacobi_symbol",
"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_digits | 2048 |
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. |
Note tecniche
Lo usi per compiti di teoria dei numeri, controlli di gara, impalcature di test di primalità e passi deterministici di API che richiedono (a/n) esatto senza virgola mobile né script ad hoc.
Come chiamare l’API e leggere il risultato
In caso di successo la risposta restituisce a e n come stringhe decimali normalizzate, jacobi come l’intero −1, 0 o 1, e symbol come lo stesso valore in stringa per i client che preferiscono campi di testo. Invii un corpo JSON con due campi obbligatori: a (il numeratore) e n (il denominatore positivo dispari). Ciascuno può essere una stringa di intero decimale o un numero JSON; preferisca le stringhe quando i valori superano l’intervallo sicuro di interi di JavaScript. Sono accettati gli alias numerator o top per a, e denominator, modulus o m per n, così moduli e client scritti a mano condividono un solo contratto. Controlli classici: a=5 e n=13 produce jacobi −1; a=2 e n=15 produce +1; a=1001 e n=9907 produce −1; a=0 e n=9 produce 0; a=1 e qualsiasi n dispari produce +1. Validazione fallita — campi mancanti, non interi, frazioni, n pari, n minore di 1, o valore più lungo del limite di cifre pubblicato — restituisce invalid_input e non viene mai addebitata. Il prezzo è un $0.002 fisso per richiesta riuscita (voce unitaria a prezzo marginale zero).
Limiti, prestazioni e dove si colloca
Questa capacità limita a e n a 2048 cifre decimali ciascuno — abbastanza per problemi di gara, demo crypto in aula e compiti multiprecisione — ma abbastanza piccolo da mantenere interattivo il BigInt puro in Worker. Se Le serve il simbolo di Kronecker per denominatori pari o zero, una libreria completa di reticoli di classi di residuo, o primitive crypto a tempo costante, usi uno stack multiprecisione dedicato; questo strumento leggero di parse è la calcolatrice e il passo API condivisi per la valutazione esatta di Jacobi. Lo abbini a strumenti di esponenziazione modulare o inversa quando un flusso richiede il kit modulare più ampio; questo endpoint risponde solo alla domanda di Jacobi così l’intento di ricerca resta chiaro e la risposta minima.
Casi di integrazione
CTF, puzzle e pipeline di teoria dei numeri
Autori e risolutori di challenge che necessitano di (a/n) esatto per n dispari ottengono un’API stabile e uno strumento gratuito nel browser con lo stesso nucleo, con invalid_input chiaro quando n è pari.
Domande tecniche
Perché n deve essere dispari e almeno 1?
Il simbolo di Jacobi classico è definito solo per denominatori positivi dispari. n pari o minore di 1 restituisce invalid_input; usi uno strumento del simbolo di Kronecker se Le serve quell’estensione.