Primo precedente
Trova il più grande primo strettamente minore del suo numero: sotto 10 ci sono 2, 3, 5 e 7, quindi la risposta è 7. Funziona per qualsiasi intero maggiore di 2 fino a mille miliardi, con la stessa risposta esatta ogni volta. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- N
- 10
- Primo precedente
- 7
Cercare il primo che si colloca immediatamente sotto un intero dato è un passo comune nei compiti di teoria dei numeri, nei problemi di gara e negli esperimenti crittografici che necessitano di un seme primo vicino.
Cosa significa «primo precedente» e quando è definito
Il primo precedente di un intero n è il massimo numero primo strettamente più piccolo di n. Ad esempio, quando n è 10 i primi sotto di esso sono 2, 3, 5 e 7, quindi il primo precedente è 7. Quando n stesso è primo — diciamo n uguale a 17 — il primo precedente resta quello sotto, che è 13, non 17; la definizione non restituisce mai n.
La nozione è definita solo quando esiste almeno un primo sotto n. Poiché 2 è il più piccolo primo, nessun intero minore o uguale a 2 ha un primo precedente: non c'è nulla di strettamente più piccolo che sia primo. Quel contratto coincide con i manuali e gli enunciati di gare di programmazione che chiedono il massimo primo minore di n senza inventare una risposta dove non esiste.
Internamente il motore scorre i candidati da n meno uno verso il basso e ne verifica ciascuno con un controllo di primalità deterministico finché compare il primo primo.
Gap tra primi, limiti e usi pratici
I gap tra primi crescono lentamente in media: vicino a una dimensione x la distanza tipica tra primi consecutivi è dell'ordine del logaritmo naturale di x, così una breve discesa da n di solito trova il primo precedente dopo solo pochi candidati. Se le serve il primo precedente di un intero di dimensione crittografica, le serve uno stack dedicato di interi grandi e un motore di primalità più forte; questa capacità leggera di parse non è quello strumento.
In pratica i docenti usano il primo precedente per illustrare domande di tipo Bertrand, gli studenti per verificare calcoli a mano prima di consegnare le dimostrazioni, e gli sviluppatori quando un protocollo o una regola di gioco necessita del massimo primo sotto un livello, un punteggio o una dimensione di bucket.
Casi d'uso
Controllare compiti e risposte «massimo primo sotto n»
Studenti e coach possono verificare il massimo primo minore di un bound senza elencare i primi a mano né rischiare errori di uno quando n stesso è primo.
Seminare primi vicini in script e test basati su proprietà
I generatori che necessitano di un primo strettamente sotto una dimensione, un punteggio o una lunghezza di tabella possono chiamare questo passo deterministico invece di spedire la propria divisione di prova.
Domande frequenti
Qual è il primo precedente di n?
È il massimo primo strettamente minore di n.
Il trova-primo-precedente è gratuito?
Lo strumento del browser è gratuito e gira in locale.
Qual è l'n massimo?
n deve essere un intero maggiore di 2 e al massimo 10^12 (un bilione). Valori più grandi richiedono uno stack di primalità multiprecisione fuori da questa capacità.
Che cosa succede se il mio numero è già primo?
Ottiene comunque il primo precedente, mai il numero stesso. Per 17 la risposta è 13, perché il primo precedente deve essere strettamente minore del numero inserito.
Perché 2 non ha un primo precedente?
Perché 2 è il primo più piccolo e sotto di lui non c'è nessun primo. Per questo il numero deve essere maggiore di 2; per 3 la risposta è 2.
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/prev-prime \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/prev-prime", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/prev-prime",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/prev-prime", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/prev-prime", 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": 10
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.prev_prime",
"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. |
Note tecniche
Questo trova-primo-precedente prende un intero n maggiore di 2 e restituisce il massimo primo strettamente minore di n — divisione di prova deterministica, senza campionamento, e gratis da provare nel browser prima di collegare lo stesso nucleo negli script tramite l'API.
Cosa significa «primo precedente» e quando è definito
Questa capacità richiede quindi n maggiore di 2 e risponde con invalid_input se invia 2, 1, 0 o un valore negativo. Non ottiene mai un «forse» probabilistico alla Miller–Rabin; per ogni n accettato nell'intervallo l'intero previous_prime è esatto e riproducibile tra browser e percorsi API.
Come chiamare l'API e cosa restituisce
La usi in pipeline di compiti, generatori di test basati su proprietà che necessitano di un bound primo vicino, o qualsiasi flusso che voglia un predecessore riproducibile senza installare un sistema di algebra computazionale né riscrivere a mano la divisione di prova. Invii un corpo JSON con un unico campo obbligatorio n — un intero strettamente maggiore di 2 e al massimo un bilione (10^12). Sono accettati gli alias number e value per lo stesso campo così moduli e client scritti a mano possono usare l'etichetta naturale. In caso di successo la risposta include n come accettato e previous_prime come il massimo primo strettamente minore di quel n. Controlli tipici: n di 3 produce previous_prime 2; n di 100 produce 97; n di 1000 produce 997. La validazione fallita — n mancante, non intero, frazione, valore minore o uguale a 2, o valore sopra il massimo pubblicato — restituisce invalid_input e non viene mai addebitata. Il prezzo è un $0.002 forfettario per richiesta riuscita (unità item con prezzo marginale zero).
Gap tra primi, limiti e usi pratici
Esistono comunque gap patologici, ed è per questo che questa capacità limita n a un bilione — abbastanza grande per problemi di aula, molte gare di programmazione ed esperimenti crittografici leggeri, e abbastanza piccolo perché la primalità per divisione di prova resti interattiva sul percorso puro del Worker senza librerie multiprecisione. Lo abbini a una routine di primo successivo se le serve la coppia vicina completa; questo endpoint risponde deliberatamente solo al lato strettamente-minore-di così l'intento di ricerca resta chiaro e la risposta minima.
Casi di integrazione
Illustrare i gap tra primi nel materiale didattico
Confronti n con previous_prime su un intervallo di valori per mostrare come si comportano i gap senza costruire una tabella completa di primi nel taccuino della lezione.
Domande tecniche
Perché n = 2 viene rifiutato?
2 è il più piccolo primo, quindi non esiste un primo strettamente sotto di esso. Valori di n minori o uguali a 2 restituiscono invalid_input.
Come funziona il trova-primo-precedente?
Scorre i candidati da n − 1 verso il basso e ne verifica ciascuno con divisione di prova deterministica finché trova un primo, poi restituisce quell'intero come previous_prime.