Il tuo compito è calcolare la radice quadrata di un numero intero positivo senza utilizzare alcun operatore matematico per modificare il numero, ad esempio:
- Impostazione di una variabile (es. SquareRoot = 5)
- Aggiunta (A + B)
- Sottrazione (AB)
- Moltiplicazione (A * B)
- Divisione (A / B)
- Radici quadrate, cubiche, quarte ecc
- esponenti
Gli operatori di confronto (come <,>, ==, ecc.) Non sono considerati "operatori matematici" ai fini di questa domanda e sono consentiti purché non modifichino il valore di una variabile.
L'unico operatore che sei in grado di utilizzare è ++. Sono presenti le seguenti eccezioni:
- Se lo desideri, puoi inizializzare una variabile impostandola su 0.
- Se la tua lingua non include la sintassi ++, puoi usare una sintassi equivalente, come foo + = 1 o foo = foo + 1
- La radice quadrata dovrebbe essere calcolata ad almeno 6 cifre oltre il decimale (la posizione delle centinaia di migliaia) e emessa come un numero intero di decimali (es. Se inserisco 2 potrebbe risultare come 14142135624 o 1414213 a seconda dell'arrotondamento) . L'arrotondamento per eccesso o per difetto non è importante.
Le funzioni definite dall'utente non sono consentite. Inoltre, non è consentita la simulazione di funzioni con goto.
Sono interessato a vedere ciò che tutti inviano! Buona programmazione!
UNA PRECISAZIONE
Chiarire che il numero è un numero intero positivo. Puoi creare un codice che farebbe qualsiasi numero ma non è necessario.
CHIARIMENTO # 2
Chiarire che gli operatori di confronto sono ammessi.
CHIARIMENTO # 3
Aggiunta, sottrazione, moltiplicazione, divisione e funzioni per modificare i numeri non sono consentiti affatto , indipendentemente dal fatto che vengano salvati in una variabile o meno. Mi dispiace che ciò invalidi un paio di risposte esistenti, ma intendevo definire questo gruppo di operatori con "cambia il numero" al fine di prevenire le risposte del troll (es. Ho appena usato la funzione sqrt (), hai proibito solo l'aggiunta, moltiplicazione, divisione e sottrazione). Dispiace per la confusione.
CHIARIMENTO # 4
Chiarire che abbiamo bisogno di almeno 5 cifre. 10 cifre hanno causato l'esecuzione a lungo del codice.
while r*r<n*10e20:r+=1
- abbastanza banale. Inoltre, potresti considerare di ridurre l'output richiesto a 10 ^ 8 o giù di lì. Innanzitutto, perché 10 ^ 10 è maggiore di 2 ^ 31 e, in secondo luogo, perché ci vorrà del tempo per incrementare così in alto.