PDA

View Full Version : [c++]radice quadrata


SCYHO
14-02-2006, 14:29
:confused: :confused: come calcolo la radice quadrata di un numero?


p.s. mi sertve per determinare se un numero è primo o no!

wisher
14-02-2006, 15:13
:confused: :confused: come calcolo la radice quadrata di un numero?


p.s. mi sertve per determinare se un numero è primo o no!
usa la sqrt della math.h

Ziosilvio
14-02-2006, 15:30
come calcolo la radice quadrata di un numero?


p.s. mi sertve per determinare se un numero è primo o no!
Ma... invece di confrontare d con sqrt(n), non fai prima a confrontare d*d con n?

SCYHO
14-02-2006, 15:40
Ma... invece di confrontare d con sqrt(n), non fai prima a confrontare d*d con n?


eh??

:eek: :eek:

SCYHO
14-02-2006, 15:59
bah..io ho fatto in questo modo ed il programma mi funziona perfettmente:


#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{

double x;
int esci=1;
do {
cout << "Inserisci un numero intero positivo" << endl;
cin >> x;
if(x<1) { cout << "Inserire un numero positivo" << endl;
cin >> x;
} else if(x==1) { cout << "Il numero inserito è' 1 ed e' sicuramente primo" << endl; }
else if(x>1) {
double ris = sqrt(x);
int ris1 = ris;
if((ris1*ris1) == x) {
cout << "Il numero inserito non e' primo" << endl; }
else { cout << "Il numero inserito e' primo" << endl; }
}

cout << "ancora?(y=1,n=0)" << endl;
cin >> esci;

} while(esci);




system("PAUSE");
return 0;
}

Ziosilvio
14-02-2006, 16:52
bah..io ho fatto in questo modo ed il programma mi funziona perfettmente:


#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{

double x;
int esci=1;
do {
cout << "Inserisci un numero intero positivo" << endl;
cin >> x;
if(x<1) { cout << "Inserire un numero positivo" << endl;
cin >> x;
} else if(x==1) { cout << "Il numero inserito è' 1 ed e' sicuramente primo" << endl; }
E questo gia' e' un errore, visto che 1 non e' un numero primo.
else if(x>1) {
double ris = sqrt(x);
int ris1 = ris;
if((ris1*ris1) == x) {
cout << "Il numero inserito non e' primo" << endl; }
else { cout << "Il numero inserito e' primo" << endl; }
}
Questo non controlla se x e' primo, ma se e' un quadrato perfetto.

SCYHO
14-02-2006, 17:07
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!

non capisco quale sia il problema... :confused:

wisher
14-02-2006, 17:13
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!

non capisco quale sia il problema... :confused:
:confused: un numero è primo se divisibile solo per 1 e per se stesso....
ad esempio 15 non è ne primo (3x5) ne quadrato perfetto....

SCYHO
14-02-2006, 17:34
:confused: un numero è primo se divisibile solo per 1 e per se stesso....
ad esempio 15 non è ne primo (3x5) ne quadrato perfetto....
mica ho detto ke nn è così? :boh:

dico solo ke il programma su 100000000 numeri inseriti mi da il 100% di risposte esatte. l'importante è riuscirci no?ma non come...

xplorer87
14-02-2006, 17:34
in che modo il fatto di essere un numero primo c'entra con la radice di x?

Ziosilvio
14-02-2006, 18:05
in che modo il fatto di essere un numero primo c'entra con la radice di x?
Se x non e' primo, allora esiste un primo p che divide x e che non supera la radice quadrata di x.

Ziosilvio
14-02-2006, 18:08
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!

non capisco quale sia il problema... :confused:
Che (come ti hanno gia' detto) se hai un numero che non e' ne' primo ne' un quadrato perfetto (e ce ne sono: ad esempio, 6) il tuo programma da' una risposta sbagliata.